【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]) # ベクトル