[英]Python numpy.square vs **
numpy.square
和在 Numpy 数组上使用**
运算符之间有区别吗?
据我所见,它产生了相同的结果。
执行效率有什么不同吗?
一个澄清的例子:
In [1]: import numpy as np
In [2]: A = np.array([[2, 2],[2, 2]])
In [3]: np.square(A)
Out[3]:
array([[4, 4],
[4, 4]])
In [4]: A ** 2
Out[4]:
array([[4, 4],
[4, 4]])
您可以检查执行时间以清楚地了解它
In [2]: import numpy as np
In [3]: A = np.array([[2, 2],[2, 2]])
In [7]: %timeit np.square(A)
1000000 loops, best of 3: 923 ns per loop
In [8]: %timeit A ** 2
1000000 loops, best of 3: 668 ns per loop
对于大多数设备,两者都会给您相同的结果。 通常,标准的 pythonic a*a
或a**2
比numpy.square()
或numpy.pow()
更快,但numpy
函数通常更灵活和精确。 如果您进行需要非常准确的计算,请坚持使用numpy
,甚至可能使用其他数据类型float96
。
对于正常使用a**2
会做得很好,而且比numpy
更快。 这个线程中的人为类似问题提供了一些很好的例子。
@saimadhu.polamuri 和 @foehnx/@Lumos
目前,在我的机器上,NumPy 的执行速度比 ** 快。
在 [1] 中:将 numpy 导入为 np
在 [2] 中: A = np.array([[1,2],[3,4]])
在 [3] 中:%timeit A ** 2
每个循环 256 ns ± 0.922 ns(平均值 ± 标准偏差。7 次运行,每次 1000000 次循环)
在 [4] 中:%timeit np.square(A)
每个循环 240 ns ± 0.759 ns(平均值 ± 标准偏差。7 次运行,每次 1000000 次循环)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.