我想使用以下代码重塑大小(3,1)到(3,)的数组:
import numpy as np
a=np.random.random(size=(4,3,1))
a[1]=a[1].reshape(3,)
但是得到以下错误:
ValueError: could not broadcast input array from shape (3) into shape (3,1)
如何解决它。
答案 0 :(得分:1)
据我了解,您的数组由数组(a.shape = (4,3,1)
)组成。
我确实理解a[1].shape = (3,1)
似乎与a[1].shape = (3,)
没有什么不同,但程序语言并不理解((3,1) != (3,))
这意味着(3,1)
和(3,)
完全不同,因为a[2],a[3]
仍然有shape = (3,1)
,数组数组中的每个数组必须具有相同的形状(3,1)。因此,您需要立即重塑所有数组,或者将a[1]
复制到另一个变量并重新整形此变量。
a = a.reshape(4,3)
并使用a[1]
或者:
b = a[1]
b = b.reshape(3,)