나는 NumPy와의 포인트 배열이 있습니다유클리드 거리는
points = rand(dim, n_points)
을 그리고 싶은 : 특정 지점과 다른 모든 사이
- 계산 모든 L2 규범 (유클리드 거리) points
- 모든 pairwise 거리를 계산하십시오.
및 바람직하게는 numpy 및 no. 어떻게 할 수 있습니까?
나는 NumPy와의 포인트 배열이 있습니다유클리드 거리는
points = rand(dim, n_points)
을 그리고 싶은 : 특정 지점과 다른 모든 사이
및 바람직하게는 numpy 및 no. 어떻게 할 수 있습니까?
당신은 SciPy의 scipy.spatial.distance
모듈 (기능 cdist
및/또는 pdist
) 당신은 당신이 너무 방송을 함께 할 수있는 C.에서 수행 루핑 모두와 함께, 원하는 게 정확히 사용 기꺼이 있지만 일부 여분이 있다면 메모리 오버 헤드.
이 두 번째 부분에 도움이 될 수 있습니다
import numpy as np
from numpy import *
p=rand(3,4) # this is column-wise so each vector has length 3
sqrt(sum((p[:,np.newaxis,:]-p[:,:,np.newaxis])**2 ,axis=0))
array([[ 0. , 0.37355868, 0.64896708, 1.14974483],
[ 0.37355868, 0. , 0.6277216 , 1.19625254],
[ 0.64896708, 0.6277216 , 0. , 0.77465192],
[ 1.14974483, 1.19625254, 0.77465192, 0. ]])
을 제공하는 경우 페이지이었다
array([[ 0.46193242, 0.11934744, 0.3836483 , 0.84897951],
[ 0.19102709, 0.33050367, 0.36382587, 0.96880535],
[ 0.84963349, 0.79740414, 0.22901247, 0.09652746]])
당신은
를 통해 항목 중 하나를 확인하실 수 있습니다sqrt(sum ((p[:,0]-p[:,2])**2))
0.64896708223796884
트릭은 신축을 넣고 방송을하는 것입니다.
행운을 빈다.