gpt4 book ai didi

python - 加速 Python 中的列表处理

转载 作者:行者123 更新时间:2023-12-04 04:09:13 26 4
gpt4 key购买 nike

我有两个列表 list1list2,每个列表的大小都是 5000,列表的每个条目都是一个 numpy.array。我想以快速有效的方式计算列表元素之间的欧几里得距离的平方,即我需要计算 sum((list1[i]-list2[j])**2) 对于 i 和 j 的每个组合,因此总共有 2,500,000 种组合。我目前这样做是通过运行双循环并将每个结果写入 2d numpy.array 通过

result[i,j] = sum((list1[i]-list2[j])**2) 

但在我的电脑上还需要大约 4 分钟的时间。我想知道是否可以使用任何技巧来进一步加快计算速度。

最佳答案

如果您坚持使用 numpy(假设您的内部数组是一维的):

dist_mat = ((list1[:,None,:]-list2[:,:])**2).sum(2)

请注意,根据您对相关距离的定义,这是欧氏距离的平方。如果您想要距离本身,只需对其取平方根即可。
否则,我更喜欢@Quang 的评论:

from scipy.spatial import distance_matrix
dist_mat = distance_matrix(list1, list2)

关于python - 加速 Python 中的列表处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62029799/

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