How can the Euclidean distance be calculated with NumPy?

后端 未结 22 904
春和景丽
春和景丽 2020-11-22 02:29

I have two points in 3D:

(xa, ya, za)
(xb, yb, zb)

And I want to calculate the distance:

dist = sqrt((xa-xb)^2 + (ya-yb)^2 + (         


        
相关标签:
22条回答
  • 2020-11-22 02:37

    You can just subtract the vectors and then innerproduct.

    Following your example,

    a = numpy.array((xa, ya, za))
    b = numpy.array((xb, yb, zb))
    
    tmp = a - b
    sum_squared = numpy.dot(tmp.T, tmp)
    result = numpy.sqrt(sum_squared)
    
    0 讨论(0)
  • 2020-11-22 02:38

    With Python 3.8, it's very easy.

    https://docs.python.org/3/library/math.html#math.dist

    math.dist(p, q)
    

    Return the Euclidean distance between two points p and q, each given as a sequence (or iterable) of coordinates. The two points must have the same dimension.

    Roughly equivalent to:

    sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q)))

    0 讨论(0)
  • 2020-11-22 02:39

    It can be done like the following. I don't know how fast it is, but it's not using NumPy.

    from math import sqrt
    a = (1, 2, 3) # Data point 1
    b = (4, 5, 6) # Data point 2
    print sqrt(sum( (a - b)**2 for a, b in zip(a, b)))
    
    0 讨论(0)
  • 2020-11-22 02:39
    import numpy as np
    from scipy.spatial import distance
    input_arr = np.array([[0,3,0],[2,0,0],[0,1,3],[0,1,2],[-1,0,1],[1,1,1]]) 
    test_case = np.array([0,0,0])
    dst=[]
    for i in range(0,6):
        temp = distance.euclidean(test_case,input_arr[i])
        dst.append(temp)
    print(dst)
    
    0 讨论(0)
  • 2020-11-22 02:40

    Find difference of two matrices first. Then, apply element wise multiplication with numpy's multiply command. After then, find summation of the element wise multiplied new matrix. Finally, find square root of the summation.

    def findEuclideanDistance(a, b):
        euclidean_distance = a - b
        euclidean_distance = np.sum(np.multiply(euclidean_distance, euclidean_distance))
        euclidean_distance = np.sqrt(euclidean_distance)
        return euclidean_distance
    
    0 讨论(0)
  • 2020-11-22 02:41

    Since Python 3.8

    Since Python 3.8 the math module includes the function math.dist().
    See here https://docs.python.org/3.8/library/math.html#math.dist.

    math.dist(p1, p2)
    Return the Euclidean distance between two points p1 and p2, each given as a sequence (or iterable) of coordinates.

    import math
    print( math.dist( (0,0),   (1,1)   )) # sqrt(2) -> 1.4142
    print( math.dist( (0,0,0), (1,1,1) )) # sqrt(3) -> 1.7321
    
    0 讨论(0)
提交回复
热议问题