python中的广播数组

时间:2017-10-30 08:15:10

标签: python python-3.x numpy

我想使用以下代码重塑大小(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)

如何解决它。

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,)