我遇到了使用数值向量化here计算欧几里得距离的问题。完成的计算如下:

>>> tri = np.array([[1, 1],
... [3, 1],
... [2, 3]])
>>> np.sum(tri**2, axis=1) ** 0.5 # Or: np.sqrt(np.sum(np.square(tri), 1))
array([1.4142, 3.1623, 3.6056])所以,为了理解,我试着:
>>> np.sum(tri**2, axis=1)
array([ 2, 10, 13])因此,基本上,tri**2对每个元素进行平方:[[1,1],[9,1],[4,9]]。接下来,我们对每个子数组元素求和以获得[1+1, 9+1, 4+9] = [2,10,13]
然后我们取每一个的平方根。
但是我不知道在公式中我们在哪里做减法qi-pi?我还觉得我们应该得到单一的值:√((1-1)^2+(9-1)^2+(4-9)^2)=9.43
我是不是错过了一些数学知识,或者对python / numpy的理解?
发布于 2020-10-16 22:00:31
假设您有两个表示为np.array的向量p和q
dist = np.sqrt(np.sum((q - p) ** 2))还有一个np.linalg.norm,它计算同样的事情:
assert np.isclose(dist, np.linalg.norm(q - p))https://stackoverflow.com/questions/64390458
复制相似问题