为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用矢量化方法计算多维数组之间的成对曼哈顿/L1 距离?

如何使用矢量化方法计算多维数组之间的成对曼哈顿/L1 距离?

MMTTMM 2021-11-09 16:34:07
假设我有两个大小为 (4000, 3) 的数组。我想以矢量化方式做的是计算从第一个数组的每个向量到第二个数组中的每个向量的 L1/Manhattan 距离,这样我最终会得到一个 (4000, 4000) 数组。我目前的方法是基于将 (4000, 3) 拆分为 3 个单独的 (4000, 1) 数组并进行广播。但是,如果我有大小不同的初始矩阵,例如 (4000, 4) 或 (4000, 5),则这种方法实际上不起作用。然后我的代码会中断,因为它假设有 3 个通道。因此,对于创建可以计算成对 L1 距离的广义矢量化方法的任何帮助,我将不胜感激!
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超7个赞

您可以使用广播来完成整个事情(如果我理解您要正确执行的操作)。首先计算向量的成对差异(结果为 shape N,N,k),然后计算每个向量的绝对值之和。


N = 4000

k = 4


X = np.random.rand(N,k)

Y = np.random.rand(N,k)


Z = np.sum(np.abs(X[:,None]-Y[:]),axis=-1)


查看完整回答
反对 回复 2021-11-09
  • 1 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信