我正在编写一个程序来查找两个向量之间的余弦相似度。对于小文本文件,它工作正常,但对于大数据,它会给出错误。我已经经历了很多广播的例子,但无法解决实际问题。 (在第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)
答案 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)
如果x
和y
的形状不同,那么您将收到此类错误。
它们都必须是相同的形状。请阅读this numpy
广播规则