这是我有的列表
[[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)
答案 0 :(得分:2)
如果列表名为l,则下面的代码可以帮助您找到有问题的元素。
for i,v in enumerate(l):
if(len(v)!=len(l[0])):
print('bad element {} at {}'.format(v,i))
修复这些元素应该有助于解决问题。
答案 1 :(得分:1)
numpy数组的size字段是其中元素的总数。您正在寻找的阵列的2D结构可通过'形状来访问。字段。
编辑: 您是否注意到您的子列表(显然)长度为7,但15410不是7的倍数?这意味着您的子列表不能具有相同的长度,这与您从np.vstack获得的错误一致