私が忘れるかもしれないことをまとめていきます。
次元の変換
reshapeメソッドを使う以外にも以下のような方法がある。
import numpy as np a = np.array([1, 2, 3]) # a[:,np.newaxis]はa.reshape(3,1)と同じ # a[:,np.newaxis]はa[:,None]とも書ける a[:,np.newaxis] a.reshape(3,1)
行を足しわせる、列を足し合わせる
np.sum()メソッドを使う
行を足しわせる、列を足し合わせるイメージ
import numpy as np c = np.array([[1, 2, 3], [4, 5, 6]]) # 行を足し合わせる時はaxis=0 print("行の足し合わせ") print(np.sum(c, axis=0).reshape(-1,3)) # 列を足し合わせる時はaxis=1 print("列の足し合わせ") print(np.sum(c, axis=1).reshape(2,-1))
行列のサイズを取得
shapeをつかえばよい。
import numpy as np c = np.array([[1, 2, 3], [4, 5, 6]]) #.shapeはタプルである print("c.shape: {}".format(c.shape)) print("c.shape[0]: {}".format(c.shape[0])) print("c.shape[1]: {}".format(c.shape[1]))
クラスの確認
typeメソッドを使えばよい。
import numpy as np c = np.array([[1, 2, 3], [4, 5, 6]]) print("type(c): {}".format(type(c)))
次元の確認
ndimを使えばよい。
import numpy as np c = np.array([[1, 2, 3], [4, 5, 6]]) print("c.ndim: {}".format(c.ndim))
ブロードキャスト
例えば配列の要素同士の加算を行う時、それぞれの形状(shape)が合致していない場合、
合致するように計算してくれる機能です。
ルール1.
ブロードキャスト対象の配列の中で、次元数(ndim)が異なる時は
shapeの先頭に1を入れることで調整する
ルール2.
計算処理に用いることのできる配列は、各次元の要素数が、
最も大きい値に等しい、もしくはちょうど1となっているようなものである。
ルール3.
出力される配列のshapeは調整されたshapeのそれぞれの次元において
最も要素数の多いものに合わせられる
ルール4.
要素数が1となっている次元の軸については、値はすべて同じものが繰り返される
1次元配列のshape
1次元配列のshapeは(R,)のように出力されます。
import numpy as np a = np.array([1, 2, 3, 4, 5, 6]) print("a.shape: {}".format(a.shape))
要素のデータ型
データ型を表現するdtypeという属性があります。
import numpy as np a = np.array([1, 2, 3]) b = np.array([1, 2, 3], dtype='int32') print("a.dtype: {}".format(a.dtype)) print("b.dtype: {}".format(b.dtype))
ディープコピーとシャロ―コピー
ディープコピーはcopy()メソッドを使う
シャロ―コピーはview()メソッドを使う
参考文献
Numpy データ処理入門