numpy.array不转换我的名单列表变为2D numpy的数组中Python3
问题描述:
这是列出的名单上有numpy.array不转换我的名单列表变为2D numpy的数组中Python3
[[3, 2, 1, 2, 2, 3, 1], [3, 4, 2, 3, 1, 3, 2], [1, 2, 4, 1, 2, 4, 1], [3, 4, 3, 1, 4, 1, 2], [3, 1, 4, 1, 2, 3, 4], [3, 1, 3, 3, 2, 4, 1], [3, 2, 1, 2, 2, 3, 1], [3, 2, 1, 2, 2, 3, 1], [3, 2, 1, 2, 2, 3, 1], [3, 2, 1, 2, 2, 3, 1], [1, 2, 1, 2, 2, 3, 1], [4, 3, 1, 4, 1, 2, 3], [3, 2, 2, 1, 2, 1, 2], [3, 2, 1, 2, 2, 3, 1], [2, 2, 2, 1, 2, 4, 1], [1, 4, 3, 2, 2, 1, 4],....,[1, 2, 1, 1, 3, 1, 2], [3, 3, 4, 2, 3, 2, 1], [3, 2, 1, 2, 2, 2, 1], [4, 2, 1, 1, 4, 3, 4], [4, 4, 1, 2, 2, 4, 3], [3, 4, 3, 2, 2, 1, 4], [4, 1, 1, 3, 3, 4, 3]]
我试图numpy.array但它给一维数组这样
[[3, 2, 1, 2, 2, 3, 1] [3, 1, 2, 4, 1, 4, 4] [1, 2, 4, 1, 2, 4, 1] ...,
[4, 4, 1, 2, 2, 4, 3] [3, 4, 3, 2, 2, 1, 4] [4, 1, 1, 3, 3, 4, 3]]
大小为(15410,),这意味着它没有被创建为2D。
我甚至使用np.vstack和np.concatenate尝试。但是它表示所有列表必须具有相同的维度。它们的长度都一样。我不明白为什么我得到这个错误。我正在使用python3。还有更好的方式将列表转换为2D numpy数组吗?
编辑:该列表的列表转换为numpy的阵列中的代码:
print(testFeature)
x_test=np.array(testFeature)
print(x_test)
print (x_test.shape)
答
如果列表被称为'得到错误一致,下面的代码应该可以帮助您找到有问题的内容。
for i,v in enumerate(l):
if(len(v)!=len(l[0])):
print('bad element {} at {}'.format(v,i))
修复这些元素应该有助于解决问题。
答
一个numpy的阵列的大小字段是在它的元素的总数。您要查找的阵列的二维结构可通过“形状”字段进行访问。
编辑: 您是否注意到您的子列表(显然)长度为7,但是15410不是7的倍数?这意味着您的子列表不能全部相同的长度,这与你np.vstack
-1无法重现 – wim
那你试试?一些实际的代码会很好。 – rammelmueller
看起来像是一个2D Python列表,或者是一个Numpy数组列表。如果您没有向我们展示您使用的方式,我们如何建议更好的方式将列表列表转换为2D Numpy数组? –