多维数组中值之间的矢量化空间距离

Vectorized spatial distance between values in multidimensional arrays

给定一个 (2,2,3,3,3) 沿最后一个维度的 3D 笛卡尔坐标数组,使用 scipy.spatial.distance.cdist 计算 XA 和 XB 中成对值之间的欧几里得的语法是什么,以产生一个输出数组形状 (2, 3, 3)?

XA = np.random.normal(size=(2,2,3,3,3))
XB = np.random.normal(size=(2,2,3,3,3))
dist = cdist(XA[:, 0, ...], XB[:, 1, ...], 'seuclidean')

ReturnsValueError: XA must be a 2-dimensional array。因此,除了循环之外,用于计算 cdist(XA[:, 0], XB[:, 1])?

的 pythonic 语法是什么

这样做有用吗?如果只需要成对距离,并且坐标在最后一个维度上:

import numpy as np

XA = np.random.normal(size=(2,2,3,3,3))
XB = np.random.normal(size=(2,2,3,3,3))

distances = np.sqrt(np.sum((XA - XB)**2, axis=-1))

但是这里 distances.shape(2, 2, 3, 3)...