【发布时间】:2018-10-29 20:34:00
【问题描述】:
我正在研究曼哈顿距离。它适用于简单的 for 循环。但我试图避免这种 for 循环。
import numpy as np
import random
A = np.random.randint(5, size=(10, 5))
B = [1, 3, 5, 2, 4]
for i in range(10):
dist = sum(abs(A[i]-B))
print("Distances: ", dist)
还有比这更好的方法吗?例如使用高级索引.. 谢谢你的指导。
【问题讨论】:
-
有趣的是,我尝试使用
scipy.spatial.distance.cityblock来计算曼哈顿距离,结果它比您的循环慢,更不用说@sacul 提供的更好的解决方案了。 -
@XiaoyuLu,我只是在更新我的答案以包含
scipy方法。它也很好用,但我更喜欢使用numpy,因为在这种情况下算法非常简单,并且它避免了额外的导入 -
@sacul 同意 100%。那里有很好的解决方案!
cdist比numpy慢,并且需要额外的导入。带回家的消息是,预先编写的库可能不一定比您自己构建的代码快。
标签: python arrays python-3.x numpy