我希望能够计算n维点列表(或数组)之间的成对距离。我想计算起点列表到目的地之间的距离矩阵。
我尝试了np.meshgrid
,但并没有得到我想要的东西。可能我用错了。
图像我有点[x1,...,xn]
和[y1,...,y_n]
,我想构造成对矩阵[[(x1,y1), .... , (x_n, y1)], ...., [(x_1, y_n), ...,(x_n, y_n)]
。也可以是两个包含xs和ys的矩阵。
n=2 %number of points
d=3 %dimesion of points
X = np.random.random((d, n))
Y = np.random.random((d, n))
xv, yv = np.meshgrid(X,Y)
xv.shape
>>(6,6) %here I would like to obtain a 3x2x2 matrix
解决方案可能是一些广播魔术...
答案 0 :(得分:0)
这是我找到的解决方案:
X1 = np.array([[1,2,3], [4,5,6]])
X2 = np.array([[7,8,9], [10,11,12]])
xv, yv = np.repeat(X1, 2).reshape(3,2,2), np.repeat(X2, 2).reshape(3,2,2).transpose((0,2,1))
给出:
xv
>>array([[[1, 1],
[2, 2]],
[[3, 3],
[4, 4]],
[[5, 5],
[6, 6]]])
yv
>>array([[[ 7, 8],
[ 7, 8]],
[[ 9, 10],
[ 9, 10]],
[[11, 12],
[11, 12]]])
获得所需的矩阵:
np.stack([xv, yv]).shape
>>
(2, 3, 2, 2)