我有两个列表list1
和list2
,每个列表的大小都是5000,并且列表中的每个条目都是一个numpy.array
。我想以快速高效的方式计算列表元素之间欧几里得距离的平方,即需要计算每个i和j组合的sum((list1[i]-list2[j])**2)
,总共有250万种组合。我目前通过运行双重循环并通过使用2Dnumpy.array
将每个结果写入其中来实现这一点。
result[i,j] = sum((list1[i]-list2[j])**2)
但在我的电脑上仍需要大约4分钟的时间。我想知道是否有任何技巧可以进一步加快计算速度。
scipy.spatial.distance.cdist
之类的工具,速度会更快。 - user2357112从scipy.spatial导入distance_matrix; dist_mat = distance_matrix(list1, list2)
- Quang Hoang