多维数组中值之间的矢量化空间距离
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)
...
给定一个 (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])
?
这样做有用吗?如果只需要成对距离,并且坐标在最后一个维度上:
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)
...