俺言語。

自分にしか理解できない言語で書かれた備忘録

【Python】Numpyのndarrayは1xN行列とベクトルが全くの別物!

MATLABと大きく違う点を今更ながら気づいた…。
なんかおかしいな、やりづらいなと思っていた点ですっきりしたのでメモ。

numpy.arange(0,10,1) 
>> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) # ←これはベクトル

a = numpy.arange(0,10,1)
a.reshape(1,10)
>> array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]) # ←これは1*10の行列

よってpythonのベクトルは転置しても何も変わらず。
MATLABは1*N行列の転置はN*1行列だったのだが。


これは場合によってベクトルになるか行列なるか変わってしまう変数aに
a[0,1]でアクセスしようとしてエラーが出て気付いた。
ベクトルの場合はa.shapeでみると[n,]と表示される。


これはMATLABに慣れた人にはとっつきづらいような…。

↓こちらが参考になる。この人もこの仕様には不満がありそう。
kaisk.hatenadiary.com