:
Numpy , , . . number_of_points * number_of_cluster_centers * 3:
, .
:
import numpy as np
points = np.array([[1,1,1],
[2,1,1],
[1,2,1],
[5,5,5]])
centers = np.array([[1.5, 1.5, 1],
[5,5,5]])
, numpy- :
distance_3d = points[:,None,:] - centers[None,:,:]
"", - "" , . , . :
(number_of_points, number_of_cluster_centers, 3)
:
distance_3d_squared = distance_3d ** 2
distance_sum = np.sum(distance_3d_squared, axis=2)
distance = np.sqrt(distance_sum)
:
#array([[ 0.70710678, 6.92820323],
# [ 0.70710678, 6.40312424],
# [ 0.70710678, 6.40312424],
# [ 6.36396103, 0. ]])
, distance[i, j] i j.
:
:
distance2 = np.sqrt(np.sum((points[:,None,:] - centers[None,:,:]) ** 2, axis=2))
Scipy ( ):
scipy cdist:
from scipy.spatial.distance import cdist
distance3 = cdist(points, centers)
, cdist .