Python numpy.square vs**

Ske*_*pet 21 python numpy

在Numpy阵列上numpy.square使用**运算符是否有区别?

从我可以看到它产生相同的结果.

执行效率有何不同?

澄清的一个例子:

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]])
Run Code Online (Sandbox Code Playgroud)

sai*_*uri 19

您可以检查执行时间以获得清晰的图像

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
Run Code Online (Sandbox Code Playgroud)

  • 对于较大的矩阵,np.square可能会更快,也是:`sq = np.square%timeit sq(A)` - >`680ns` (3认同)

小智 12

对于大多数设备,两者都会给你相同的结果.通常,标准pythonic a*a或a**2比numpy.square()或numpy.pow()快,但numpy函数通常更灵活,更精确.如果你做的计算需要非常准确,坚持numpy甚至可能使用其他数据类型(float96).

对于正常使用,**2会比numpy做得更好,工作速度更快.在这些家伙的主题提出了一些很好的例子,一个类似的问题.

  • numpy数组的**只是ndarray .__ pow __()的语法糖。 (3认同)