【发布时间】:2018-09-11 23:31:36
【问题描述】:
给定一个 (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')
返回ValueError: XA must be a 2-dimensional array。因此,除了循环之外,计算cdist(XA[:, 0], XB[:, 1]) 的pythonic 语法是什么?
【问题讨论】:
-
如果坐标在最后一个轴上,如何得到 (2,3,3) 的输出形状?
-
@DSM 我不确定这是否是我自己的误解所在,但
XA[:, 0]和XB[:, 1]都有(2,3,3,3)的形状,并且考虑到沿最后一个轴的距离计算,我希望得到结果数组形状(2,3,3). -
啊,我想我明白我的困惑了——我认为 cdist 计算的距离可能比你关心的要多。它会计算所有的交叉距离,所以基本上是 num_XA_points * num_XB_points。但是您只想要 num_XA = num_XB 成对距离,对吗?
-
天啊!是的,我只想要 num_XA = num_XB 成对距离。所以我可能需要在这里使用
pdist,是吗? -
你能提供一个(简化的?)输入/输出示例吗?
标签: scipy scipy-spatial