They do mean different things, although in the case above I'm using arrays, not matrices, and am looking for element-wise operations. `**` and `np.power` work the same in that case. `**` would fail for a matrix

```python
x = np.random.uniform(2,7,(10,))
x**2
array([ 13.38439114,   5.00274794,  23.96260643,  23.34744364,
        29.05283135,   4.01809525,   7.85875116,  41.45598188,
        34.19495163,   9.99769145])
np.power(x,2)
array([ 13.38439114,   5.00274794,  23.96260643,  23.34744364,
        29.05283135,   4.01809525,   7.85875116,  41.45598188,
        34.19495163,   9.99769145])
y = np.matrix(x)
y**2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/chris/dev/virtenv/gliders/lib/python2.7/site-packages/numpy/matrixlib/defmatrix.py", line 343, in __pow__
    return matrix_power(self, other)
  File "/home/chris/dev/virtenv/gliders/lib/python2.7/site-packages/numpy/matrixlib/defmatrix.py", line 160, in matrix_power
    raise ValueError("input must be a square array")
ValueError: input must be a square array
np.power(y,2)
matrix([[ 13.38439114,   5.00274794,  23.96260643,  23.34744364,
          29.05283135,   4.01809525,   7.85875116,  41.45598188,
          34.19495163,   9.99769145]])
```