如果我有两个长度为M和N的单维数组,那么计算所有点之间欧氏距离的最有效方法是什么,结果是NxM数组?我试图用Numpy解决这个问题,但我很陌生,所以我有点卡住了。
目前我这样做:
def get_distances(x,y):
#compute distances between all points
distances = np.zeros((len(y),len(x)))
for i in range(len(y)):
for j in range(len(x)):
distances[i,j] = (x[j] - y[i])**2
return distances
答案 0 :(得分:3)
假设您有一维位置:
2016-03-04 22:17:20 +0000
2016-03-04 16:17:20 -0600
你可以使用广播:
a = np.random.uniform(50,200,5)
b = np.random.uniform(50,200,3)
结果为:
result = np.abs(a[:, None] - b[None, :])
所以i,j索引是阵列1的点i和阵列2的点j之间的距离
如果您希望结果为NxM形状,则需要交换array([[ 44.37361012, 22.20152487, 89.04608885],
[ 42.83825434, 20.66616909, 87.51073307],
[ 0.19806059, 21.97402467, 44.87053932],
[ 8.42276237, 13.74932288, 53.0952411 ],
[ 8.12181467, 30.29389993, 36.55066406]])
和a
:
b