【发布时间】:2015-02-02 23:46:30
【问题描述】:
我搜索了一下,发现了类似的问题/答案,但没有一个为我返回正确的结果。
情况:
我有一个包含许多值 == 1 的数组,而其余单元格设置为零。每个单元格都是一个正方形(宽度=高度)。
现在我想计算所有 1 值之间的平均距离。
公式应该是这样的:d = sqrt ( (( x2 - x1 )*size)**2 + (( y2 - y1 )*size)**2 )
示例:
import numpy as np
from scipy.spatial.distance import pdist
a = np.array([[1, 0, 1],
[0, 0, 0],
[0, 0, 1]])
# Given that each cell is 10m wide/high
val = 10
d = pdist(a, lambda u, v: np.sqrt( ( ((u-v)*val)**2).sum() ) )
d
array([ 14.14213562, 10. , 10. ])
之后我会通过d.mean() 计算平均值。然而,d 中的结果显然是错误的,因为顶行单元格之间的距离应该已经是 20(两个交叉单元格 * 10)。我的公式、数学或方法有问题吗?
【问题讨论】:
标签: python arrays numpy scipy euclidean-distance