沿着3D数组的轴的向量欧几里得距离-Python

问题描述 投票:1回答:1

如何在3D数组的轴上应用在2D数组(cdist)上操作的函数?

我尝试使用numpy.apply_along_axis,但是我需要在2D数组而不是1D数组上进行操作。我通过沿一个轴进行迭代获得了所需的结果,但如果可能的话,我希望将其向量化:

from scipy import spatial
import numpy as np

a = np.random.randn(600).reshape(10, 20, 3)
distances = np.array([spatial.distance.cdist(a[i,:,:], a[i,:,:]) for i in range(a.shape[0])])

python numpy scipy vectorization
1个回答
4
投票

this post的启发,我们可以以向量化的方式解决它。因此,遵循this post包中的wiki contents(免责声明:我是它的作者),我们可以利用wiki contents和某些eucl_dist,就像这样-

eucl_dist

替代项:

  • 我们可以使用matrix-multiplication代替矩阵乘法部分。因此,NumPy specific implementations可以替换为NumPy specific implementations
© www.soinside.com 2019 - 2024. All rights reserved.