如何在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])])
受this post
的启发,我们可以以向量化的方式解决它。因此,遵循this post
包中的wiki contents
(免责声明:我是它的作者),我们可以利用wiki contents
和某些eucl_dist
,就像这样-
eucl_dist
替代项:
matrix-multiplication
代替矩阵乘法部分。因此,NumPy specific implementations
可以替换为NumPy specific implementations
。