Numpy / pandasのお勉強
numpy
配列も@で行列のように計算できる。python3.5以降。
In [7]: import numpy as np In [8]: A = np.array([[1,2],[3,4]]) In [9]: B = np.array([[5,6],[7,8]]) In [10]: C = A @ B @ A.T In [11]: C Out[11]: array([[ 63, 145], [143, 329]])
以下は同じ意味
In [12]: A = np.array([[1,2],[3,4]]) In [13]: B = np.array(((1,2),(3,4)))
いろいろな配列の作り方があるよ
In [24]: np.zeros((2,2)) Out[24]: array([[ 0., 0.], [ 0., 0.]]) In [25]: np.arange(1,100,20) Out[25]: array([ 1, 21, 41, 61, 81])
メソッド
In [26]: A.shape Out[26]: (2, 2)
行列計算
In [28]: A Out[28]: array([[1, 2], [3, 4]]) In [29]: np.linalg.inv(A) Out[29]: array([[-2. , 1. ], [ 1.5, -0.5]]) In [30]: np.linalg.det(A) Out[30]: -2.0000000000000004 In [31]: np.linalg.matrix_rank(A) Out[31]: 2
配列の操作
In [34]: matrixA = np.arange(9).reshape(3,3) In [35]: matrixA Out[35]: array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) In [36]: a = matrixA[1][1:];a Out[36]: array([4, 5]) In [37]: a[1] = 10 In [38]: matrixA Out[38]: array([[ 0, 1, 2], [ 3, 4, 10], [ 6, 7, 8]]) In [39]: matrixA[0,1] Out[39]: 1 In [40]: matrixB = matrixA[1:,1:];matrixB Out[40]: array([[ 4, 10], [ 7, 8]]) In [41]: matrixB[:,:]=100 In [42]: matrixA Out[42]: array([[ 0, 1, 2], [ 3, 100, 100], [ 6, 100, 100]]) In [44]: matrixC = np.random.rand(2,2);matrixC Out[44]: array([[ 0.47235181, 0.13044348], [ 0.86500587, 0.17257454]]) In [45]: maskC = matrixC > 0.2; maskC Out[45]: array([[ True, False], [ True, False]], dtype=bool) In [46]: matrixD = matrixC[maskC] In [47]: matrixD Out[47]: array([ 0.47235181, 0.86500587])
↓すごくわかりやすい!!! 参考:
www.slideshare.net