我试图通过在欧几里德距离中为每个总和添加一个权重来计算我自己与numpy数组的距离,例如:
a = ((1, 2, 3))
b = ((4, 5, 6))
distance = np.sum((a-b)**2)
但我想要的是将我的距离设为:
a = ((1, 2, 3))
b = ((4, 5, 6))
w = ((0.2, 0,3, 0,5))
distance = 0.2*((1-4)**2) + 0.3*((2-5)**2) + 0.5*((3-6)**2)
是否有任何形式的这样做numpy没有迭代echa矢量并手动执行此操作?
答案 0 :(得分:2)
你已经到了一半:
a = np.array([[1., 2, 3]])
b = np.array([[4., 5, 6]])
w = np.array([[0.2, 0.3, 0.5]])
result = float(np.dot((a - b)**2, w.T))
因此,您只需将行向量(a - b)**2
乘以列向量w.T
即可获得所需的数字。
请注意,您必须确保阵列的尺寸匹配。