【发布时间】:2018-12-07 05:07:20
【问题描述】:
我正在寻找一种更有效、更快捷的方法来计算两个或多个数字的平方和的平方根。我实际上正在使用numpy 和这段代码:
np.sqrt(i**2+j**2)
这似乎比以下速度快五倍:
np.sqrt(sum(np.square([i,j])))
(i 和 j 是数字!)
我想知道是否已经有一个更高效的内置函数可以用更少的代码来执行这个非常常见的任务。
【问题讨论】:
-
我会一直选择
numpy。类似于np.sqrt(np.sum(a*a)),其中a是您的数字数组。 -
如果您正在寻找最短的方法,请使用 np.linalg.norm。为了获得最佳性能,您可以使用 Cython、Numba 或 numexpr。例如。 stackoverflow.com/a/49868544/4045774 在更大的数组上,这个问题也可以很容易地并行化。
-
您是否使用此操作迭代多个点?
-
@IonicSolutions 在简单的情况下似乎更快
(i*i + j*j)**0.5
标签: python performance numpy