俺言語。

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

【Python】numpy ndarrayとmatrixの特徴 覚書き

MATLABからの移行組にはとっつき辛いところが多々あるnumpyの配列,

ndarrayの気付いた点まとめ。


numpyは基本、横ベクトル

xx.shape -> (n, ) はベクトル

x.shape -> (n,m) は配列

array([1, 2, 3])やarange(10)で作成されるのはベクトル

ベクトルは標記こそ横ベクトルだが向きは無い。

よってベクトル(1×N)を転置をしてもMATLABの様にN×1ベクトルにはならない。

ベクトルをイテレータとして使うと数値が一つずつ取り出せる。

e.q. np.range(3) -> 最初:1, 次:2, 次:3

配列をイテレータとして使うと 1×Nのベクトルが取り出される

e.q. np.range([[1, 2, 3], [4, 5, 6]]) -> 最初:[1, 2, 3], 次:[4, 5, 6]

よって配列をスライスする際はベクトルでスライスするか配列(1*N)でスライスするかで

挙動が変わるので注意

data = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])

index1 = np.array([[0, 1, 2]])

data[index1, 0])

-> array([[1, 4, 7]]) # 1*3配列


index2 = np.array([0, 1, 2]) 

data[index2, 0])

-> array([1, 4, 7]) # ベクトル