ValueError:操作数无法与形状一起广播(224,224)(180,180)

时间:2014-05-28 08:23:28

标签: python numpy

我正在编写一个程序来查找两个向量之间的余弦相似度。对于小文本文件,它工作正常,但对于大数据,它会给出错误。我已经经历了很多广播的例子,但无法解决实际问题。 (在第p = x * y行获得错误)

x = numpy.dot(u, u.T)
y = numpy.dot(v, v.T)
p = x * y
value = numpy.dot(u, v.T) / p

p=(x*y)
ValueError: operands could not be broadcast together with shapes (224,224) (180,180)

2 个答案:

答案 0 :(得分:2)

您的变量 x 和变量 y 具有不同的“尺寸”。您应该尝试确保它们具有相似的“尺寸”,即224,224和224,224或180,180和180,180。

即使是numpy“乘法”,不可能有多个具有不同“维度”的两个 numpy数组

例如

x = np.linspace(1,10,num=224)
y = np.linspace(1,10,num=180)
p = x*y

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    p = x*y
ValueError: operands could not be broadcast together with shapes (224,) (180,) 

但是

 x = np.linspace(1,10,num=224)
 y = np.linspace(1,10,num=224)
 p = x*y

将起作用

答案 1 :(得分:2)

如果xy的形状不同,那么您将收到此类错误。 它们都必须是相同的形状。请阅读this numpy广播规则