gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 08:20:07 24 4
gpt4 key购买 nike

假设我有两个大小为 (4000, 3) 的数组。我想要以向量化的方式做的是计算从第一个数组的每个向量到第二个数组中的每个向量的 L1/曼哈顿距离,这样我最终会得到一个 (4000, 4000) 数组。

我当前的方法是将 (4000, 3) 分成 3 个独立的 (4000, 1) 数组并进行广播(类似于此处: Python alternative for calculating pairwise distance between two sets of 2d points )。

但是,如果我的初始矩阵大小不同,例如 (4000, 4) 或 (4000, 5),则这种方法实际上不起作用。那么我的代码就会崩溃,因为它假设有 3 个 channel 。

因此,如果您能帮助我创建可以计算成对 L1 距离的广义矢量化方法,我将不胜感激!

最佳答案

您可以使用广播来完成整个事情(如果我理解您想要正确执行的操作)。首先计算向量的成对差(结果为形状 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)

关于python - 如何使用矢量化方法来计算多维数组之间的成对曼哈顿/L1 距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54701821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com