numpy.array 不会将我的列表列表转换为 Python3 中的 2d numpy 数组

San*_*anj -2 python arrays numpy nested-lists

这是我拥有的清单列表

[[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]]
Run Code Online (Sandbox Code Playgroud)

我试过 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]]
Run Code Online (Sandbox Code Playgroud)

其大小为 (15410,) 这意味着它不会被创建为 2D。

我什至尝试使用 np.vstack 和 np.concatenate。但它说所有列表必须具有相同的维度。它们的长度都相同。我不明白为什么我会收到这个错误。我正在使用python3。还有没有更好的方法将列表列表转换为二维 numpy 数组?

编辑:将列表列表转换为 numpy 数组的代码:

      print(testFeature)
      x_test=np.array(testFeature)
      print(x_test)
      print (x_test.shape)
Run Code Online (Sandbox Code Playgroud)

All*_*len 5

如果你的 list 被称为 l,下面的代码应该可以帮助你找到有问题的元素。

for i,v in enumerate(l):
    if(len(v)!=len(l[0])):
        print('bad element {} at {}'.format(v,i))
Run Code Online (Sandbox Code Playgroud)

修复这些元素应该有助于解决问题。