gpt4 book ai didi

python - SciPy cdist 速度差异

转载 作者:行者123 更新时间:2023-12-04 15:17:32 29 4
gpt4 key购买 nike

我很好奇为什么下面的 cdist 尽管产生相同的结果但在时间上却有如此大的差异:

import numpy as np
from scipy.spatial.distance import cdist

x = np.random.rand(10_000_000, 50)
y = np.random.rand(50)

result_1 = cdist(x, y[np.newaxis, :])

result_2 = cdist(x, y[np.newaxis, :], `minkowski`, p=2.)

result_1 明显快于 result_2

最佳答案

欧氏距离的 C 实现,source lines 50-66 ,使用乘法和 sqrt() 调用,而 Minkowski 距离 source lines 381-391基于对 pow() 函数的更慢调用。

供引用,参见讨论 hereherepow 与乘法和 sqrt 进行比较。

因此,尽管欧几里得范数看起来只是称为 Minkowski 范数,source line 614 , cdist 实际上是 calls directly through到代码不同的 C 实现。实际执行时并没有调用python的euclidean函数。

关于python - SciPy cdist 速度差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64038633/

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