のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

Python Numpy(2)行列演算

Sponsored Links

皆さんこんにちは
お元気ですか?私はサンプルコード実行して死にそうです。

さて、本日はPython Numpyについて

今日は、行列周りのことをやります!

How to Use

行列演算

通常の四則演算です。

>>> import numpy as np
>>> a = np.array([[2,3,4],[5,6,7],[3,4,5]])
>>> b = np.array([[22,32,43],[51,61,72],[20,10,8]])
>>> a + b
array([[24, 35, 47],
       [56, 67, 79],
       [23, 14, 13]])
>>> a - b
array([[-20, -29, -39],
       [-46, -55, -65],
       [-17,  -6,  -3]])
>>> a * b
array([[ 44,  96, 172],
       [255, 366, 504],
       [ 60,  40,  40]])
>>> a / b
array([[0, 0, 0],
       [0, 0, 0],
       [0, 0, 0]])
>>> b / a
array([[11, 10, 10],
       [10, 10, 10],
       [ 6,  2,  1]])
>>> 20 * b #定数倍
array([[ 440,  640,  860],
       [1020, 1220, 1440],
       [ 400,  200,  160]])
>>> b / 3 #定数で割る
array([[ 7, 10, 14],
       [17, 20, 24],
       [ 6,  3,  2]])
>>> np.dot(a,b) #  内積
array([[277, 287, 334],
       [556, 596, 703],
       [370, 390, 457]])
>>> np.cross(a,b) #外積
array([[  1,   2,  -2],
       [  5,  -3,  -1],
       [-18,  76, -50]])
>>> np.zeros((3,3)) #0ばかりの行列を生成する。
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])

行列式逆行列など

>>> np.linalg.inv(b) #逆行列
array([[ 0.08888889, -0.06666667,  0.12222222],
       [-0.3954023 ,  0.26206897, -0.23333333],
       [ 0.27203065, -0.16091954,  0.11111111]])
>>> np.linalg.det(b) #行列式
-2610.0000000000014
>>> b.T #転置行列
array([[22, 51, 20],
       [32, 61, 10],
       [43, 72,  8]])
>>>np.diag(a) #対角行列
array([2, 6, 5])

後は頑張って数式に落とし込めば大抵のことはできます。

参考文献

NumPy 利用ノート