Is there a difference between numpy.square
and using the **
operator on a Numpy array?
From what I can see it yields the same result.
You can check the execution time to get clear picture of it
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
For most appliances, both will give you the same results.
Generally the standard pythonic a*a
or a**2
is faster than the numpy.square()
or numpy.pow()
, but the numpy
functions are often more flexible and precise.
If you do calculations that need to be very accurate, stick to numpy
and probably even use other datatypes float96
.
For normal usage a**2
will do a good job and way faster job than numpy
.
The guys in this thread gave some good examples to a similar questions.