Dum*_*Guy 3 python arrays numpy euclidean-distance
我有3D阵列
A = [[x1 y1 z1]
[x2 y2 z2]
[x3 y3 z3]]
Run Code Online (Sandbox Code Playgroud)
我必须找到每个点之间的欧几里德距离,这样我才能得到只有3个距离的输出(row0,row1),(row1,row2)和(row0,row2).
我有一些代码
dist = scipy.spatial.distance.cdist(A,A, 'euclidean')
Run Code Online (Sandbox Code Playgroud)
但它会以矩阵形式给出距离
dist= [[0 a b]
[a 0 c]
[b c 0]]
Run Code Online (Sandbox Code Playgroud)
我想要结果[a b c].
考虑使用scipy.spatial.distance.pdist.
你可以这样做.
>>> A = np.array([[1, 2, 3], [4, 5, 6], [10, 20, 30]])
>>> scipy.spatial.distance.pdist(A)
array([ 5.19615242, 33.67491648, 28.93095228])
Run Code Online (Sandbox Code Playgroud)
但要注意输出距离的顺序是(row0,row1),(row0,row2)和(row1,row2).
你可以这样做:
>>> import numpy as np
>>> from itertools import combinations
>>> A = np.array([[1, 2, 3], [4, 5, 6], [10, 20, 30]])
>>> [np.linalg.norm(a-b) for a, b in combinations(A, 2)]
[5.196152422706632, 33.674916480965472, 28.930952282978865]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2663 次 |
| 最近记录: |