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) 
+0

-1无法重现 – wim

+0

那你试试?一些实际的代码会很好。 – rammelmueller

+0

看起来像是一个2D Python列表,或者是一个Numpy数组列表。如果您没有向我们展示您使用的方式,我们如何建议更好的方式将列表列表转换为2D Numpy数组? –

如果列表被称为'得到错误一致,下面的代码应该可以帮助您找到有问题的内容。

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

+0

虽然'(15410)更新'看起来像一个'shape'元组。他可能只是松散地使用术语形状/大小。 'vstack'错误支持这个1d读数。 – hpaulj

+0

@hpaulj优点在那里。我用我刚刚注意到的另一个参数更新我的答案 –

+0

15410是列表的数量。每个列表有7个元素。所以尺寸应该是(15410,7),但它不能识别第二个维度。我的问题是我想它是一个二维数组。这就是我正在寻求帮助。 – Sanj