Python
numpy

numpyのmatrixとmatは違うものなんですね

More than 3 years have passed since last update.

この間numpyを使っていてハマったのですが、numpyのmatrixmatは違うものみたいです。本家のドキュメントを見てみるとmatmatrix(data, copy=False)と等価というふうに書いていて、コピーされないようになっているみたいです。これはどういうことかというと、

>>> import numpy as np

>>> m = np.matrix([[1.0, 2.0],[3.0, 4.0]])
>>> m
matrix([[ 1., 2.],
[ 3., 4.]])
>>> a = np.matrix(m)
>>> a[0, 0] = 5.0
>>> a
matrix([[ 5., 2.],
[ 3., 4.]])
>>> m
matrix([[ 1., 2.],
[ 3., 4.]])
>>> #aを変更してもmは変わらない
>>>
>>> b = np.mat(m)
>>> b[0, 0] = 6.0
>>> b
matrix([[ 6., 2.],
[ 3., 4.]])
>>> m
matrix([[ 6., 2.],
[ 3., 4.]])
>>> #bを変更するとmも変わる

ちょっとハマったので、書いてみました。