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.
Any differences in efficiency of execution?
An example for clarification:
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]])
square() method is used to find the square of every element in a given array. The numpy square() method takes four parameters: arr, out, where, and dtype, and returns a new array with an argument value as the square of the source array elements.
squeeze() function is used when we want to remove single-dimensional entries from the shape of an array.
inner() Advertisements. This function returns the inner product of vectors for 1-D arrays. For higher dimensions, it returns the sum product over the last axes.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With