繁体   English   中英

Python numpy.square 与 **

[英]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*aa**2numpy.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM