python - numpyの初歩
numpyの基本的な機能確認
python のバージョンは 3.6.4
import numpy as np # listとndarrayの相互変換 a = [[1,2],[3,4]] b = np.array(a) print(repr(b)) # array([[1,2],[3,4]]) c = b.tolist() print(c) # [[1,2],[3,4]] # データ型 print(b.dtype) # int32 # 次元 print(b.ndim) # 2 # 要素数 print(b.size) # 4 # 行列数 print(b.shape) # (2, 2) # ndarrayの生成 a = np.arange(8, dtype=int) # end, type print(repr(a)) # array([0, 1, 2, 3, 4, 5, 6, 7]) a = np.arange(1,19,2) # begin, end, step print(repr(a)) # array([ 1, 3, 5, 7, 9, 11, 13, 15, 17]) # 行列構成変更 b = a.reshape((3,3)) # tupleで指定 print(repr(b)) # array([[1, 3, 5],[7, 9, 11],[13, 15, 17]]) # スライス print(b[0]) # [1,3,5] print(b[0][0]) # 1 print(b[0,0]) # 1 print(b[0][:2]) # [1,3] print(b[1:]) # [[7, 9, 11],[13, 15, 17]] print(b[1:][:2]) # [[7, 9, 11],[13, 15, 17]] これは上手くいかない # 等間隔な数列 a = np.linspace(0,2,5)# start,end,size print(repr(a)) # array([0. , 0.5, 1. , 1.5, 2. ]) a = np.linspace(0,2,5,endpoint = False) print(repr(a)) # array([0. , 0.4, 0.8, 1.2, 1.6]) # 乱数 a = np.random.random(4) # 要素数(0 <= n < 1.0) print(repr(a)) # array([0.44478423, 0.87792819, # 0.35577869, 0.05965164]) a = np.random.randint(0,10,5) # begin,end,size print(repr(a)) # array([7, 5, 8, 0, 1]) # ソート b = np.sort(a) print(repr(b)) # array([0, 1, 5, 7, 8]) b = np.sort(a)[::-1] # 降順 print(repr(b)) # array([8, 7, 5, 1, 0]) c = np.argsort(a) # index順を返す print(repr(c)) # array([3, 4, 1, 0, 2], dtype=int32) print(repr(a[c[:]])) # array([0, 1, 5, 7, 8]) # indexを参照してソート # 多次元ソート a = np.random.randint(0, 10, (3,2)) print( repr(a) ) # array([[4, 0],[8, 3],[1, 5]]) print( repr( np.sort(a) )) # array([[0, 4],[3, 8],[1, 5]]) # axis=-1で各行を個々にソート print( repr( np.sort(a, axis = 0) )) # array([[1, 0],[4, 3],[8, 5]]) # 各列を個々にソート # 四則演算 a = np.array([1,2,3]) b = np.array([4,5,6]) print( repr(np.add(a,b)) ) # array([5, 7, 9]) print( repr(np.subtract(a,b)) ) # array([-3, -3, -3]) print( repr(np.multiply(a,b)) ) # array([ 4, 10, 18]) print( repr(np.divide(b,a)) ) # array([4. , 2.5, 2. ]) # 各種計算 print( np.sum(a) ) # 6 print( np.mean(a) ) # 2.0 print( np.max(a) ) # 3 print( np.min(a) ) # 1 print( np.var(a) ) # 0.6666666666666666 分散 print( np.all(a) ) # True 全て真 print( np.any(a) ) # True 何れかが真 # 行列の積 a = np.array([[1,2],[3,4]]) b = np.array([[5,6],[7,8]]) print( repr(a.dot(b)) ) # array([[19, 22],[43, 50]]) # 転置行列 a = np.arange(1,5).reshape((2,2)) print(repr(a)) # array([[1, 2],[3, 4]]) print(repr(a.T)) # array([[1, 3],[2, 4]]) print(repr(np.transpose(a))) # array([[1, 3],[2, 4]]) # 0行列 a = np.zeros((2,2), dtype=int) print(repr(a)) # array([[0, 0],[0, 0]]) # 1行列 a = np.ones((2,2), dtype=int) print(repr(a)) # array([[1, 1],[1, 1]]) # 単位行列 a = np.identity(3, dtype=int) print(repr(a)) # array([[1, 0, 0],[0, 1, 0],[0, 0, 1]])