繁体   English   中英

ValueError:操作数不能与形状(5,)(30,)一起广播

[英]ValueError: operands could not be broadcast together with shapes (5,) (30,)

我正在尝试像这样合并数组:

如果:

a = [1.2, 1, 3, 4]
b = [0.0 , 0.0]
c = [0.0 , 0.0]
a = a + b + c

那么结果应该是:

[0.0 , 0.0 , 1.2 , 1 ,3 ,4 , 0.0 ,0.0]

我要做的是提取数组的直方图并将其与普通数组合并。

x1, bins, patch = plt.hist(array1, bins = round(max(array1) - min(array1)))
x1 = b + x1 + c

but the form of x1 is 
x1 = [  2.   0.   0.   1.   0.   2.   5.   0.   1.   1.   0.   1.   5.]

也许这会导致这样的错误

ValueError:操作数不能与形状(5,)(30,)一起广播

请帮我。 我不知道该怎么办

您可以使用np.concatenate来执行此操作,但是也可以通过将数组转换为列表来执行此操作。

import numpy as np

a = list(np.array([1.2, 1, 3, 4]))
b = list(np.array([0.0 , 0.0]))
c = list(np.array([0.0 , 0.0]))
D= a + b + c

因此,在您的代码中尝试:

x1 = list(b) + list(x1) + list(c)

#Put it back into a numpy array
x1 = np.array(x1)

NumPy数组与+运算符的行为不同:对于Python列表,将列表加在一起意味着串联(这是您想要的)。

但是,在NumPy中,将数组加在一起意味着按元素进行加法(并且如果维数不匹配,则首先广播 )。

要获得所需的内容,请使用np.concatenate ,例如

import numpy as np
np.concatenate((b,x1,c))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM