I need to square a 2D numpy array (elementwise) and I have tried the following code:

```
import numpy as np
a = np.arange(4).reshape(2, 2)
print a^2, '\n'
print a*a

```

that yields:

```
[[2 3]
[0 1]]

[[0 1]
[4 9]]

```

Clearly, the notation `a*a` gives me the result I want and not `a^2`. 

I would like to know if another notation exists to raise a numpy array to the power of 2 or N? Instead of `a*a*a*..*a`.