[英]Convert multidimensional list to multidimensional numpy.array
我在将python-list-of-list-of-list转换为3维numpy数组时遇到麻烦。
a = [
[
[1,2,3,4], # = len 4
...
], # = len 58
...
] # = len 1245
当我在上面调用a = np.array(a)
时,它报告形状为(1245,)
而我无法对其进行整形。 a.reshape(1245,58,4)
它给我错误: ValueError: cannot reshape array of size 1245 into shape (1245,58,4)
但是如果我打印a [0],它会给我58元素列表和一个正如我所期望的,[0] [0]给了我4个元素的列表,因此数据就在那里。
我看到很多堆栈交换帖子都希望将其扁平化,但我只想将其变成已经是形状的numpy数组。 我不知道为什么numpy.array()
没有看到其他尺寸。
相同级别(相同numpy轴)的列表的大小必须相同。 否则,您将获得一个列表数组。
np.array([[0, 1], [2]])[0] # returns [0, 1]
np.array([[0, 1], [2, 3]])[0] # returns array([1, 2])
您可以通过将列表转换为数组之前调用列表中的[ pad
]来解决此问题。
此外, reshape
的尺寸“应与原始形状兼容”。 含义(推理时为-1
值除外)新尺寸的乘积应等于旧尺寸的乘积。
例如,在您的情况下,您有一个形状数组(1245,)
因此可以调用:
a.reshape(83, 5, 3) # works
a.reshape(83, -1, 3) # works
a.reshape(83, 5, 5) # fails since 83 * 5 * 5 = 2075 != 1245
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.