16. NumPyでベクトル・行列計算

NumPyでの行列の計算方法(四則演算、合計、平均、標準偏差、分散)

更新日:

次にNumPyでの行列の計算方法を確認していきましょう。

行列の四則演算

最初に行列同士の四則演算を行います。まずは計算を行なう2つの行列x、yを定義します。

In [1]: x=np.array([[2,-1],[-3,4]])
...: x
Out[1]: array([[ 2, -1],
                      [-3, 4]])

 

In [2]: y=np.array([[1,2],[3,4]])
...: y
Out[2]: array([[1, 2],
                      [3, 4]])

 

NumPyのndarray型のデータについては、行列の和は以下のようにx + yと単純に足し算することで求めることができます。

In [3]: x + y
Out[3]: array([[3, 1],
                      [0, 8]])

 

行列の差も同様にx – yと引き算することで求めることができます。

In [4]: x – y
Out[4]: array([[ 1, -3],
                      [-6, 0]])

 

また行列の実数倍も同様にx * 実数 で求めることができます。

行列xの3倍の例は、

In [5]: x * 3
Out[5]: array([[ 6, -3],
                      [-9, 12]])

 

行列の積はdotを利用します。引数に積を求める行列を渡します。

In [6]: np.dot(x,y)
Out[6]: array([[-1, 0],
                      [ 9, 10]])

 

次に行列の要素に対して合計、平均などの数値計算を行なう関数を見ていきましょう。

まずは計算対象となる3行4列の行列arrを定義します。

In [7]: arr=np.array([[1,2,3,4],[11,12,13,14],[21,22,23,24]])
...: arr
Out[7]: array([[ 1, 2, 3, 4],
                      [11, 12, 13, 14],
                      [21, 22, 23, 24]])

 
 
 

行列の全ての要素の合計(sum)

行列を構成する全ての要素の合計にはsumを使います。

In [8]: arr.sum()
Out[8]: 150

 

列の合計

行列の構成要素の内、各列の合計を求める場合は、sumに対して、引数0を渡します。

In [9]: arr.sum(0)
Out[9]: array([33, 36, 39, 42])

 

行の合計

一方で、行列の構成要素の内、各行の合計を求める場合は、sumに対して、引数1を渡します。

In [10]: arr.sum(1)
Out[10]: array([10, 50, 90])

 
 
 

行列の全ての要素の平均(mean)

行列を構成する全ての要素の平均の算出にはmeanを使います。

In [11]: arr.mean()
Out[11]: 12.5

 

列の平均

meanにおいても、引数0を渡すことで、各列の平均を算出することができます。

In [12]: arr.mean(0)
Out[12]: array([ 11., 12., 13., 14.])

 

行の平均

またmeanに引数1を渡すことで、各行の平均も算出できます。

In [13]: arr.mean(1)
Out[13]: array([ 2.5, 12.5, 22.5])

 
 
 

行列の全ての要素の標準偏差(std)

行列を構成する全ての要素の標準偏差はstdで求めることができます。

In [14]: arr.std()
Out[14]: 8.2411568767174117

例は割愛しますが、stdもsum、meanと同様に、引数0で列の要素の標準偏差、引数1で行の要素の標準偏差を求めることもできます。

 
 
 

行列の全ての要素の分散(var)

行列を構成する全ての要素の分散はvarで求めることができます。

引数も同様、引数0で列の要素の分散、引数1で行の要素の分散を求めることができます。

In [15]: arr.var()
Out[15]: 67.916666666666671

 
 
 
著書の紹介です。


 

-16. NumPyでベクトル・行列計算

Copyright© AI-interのPython3入門 , 2019 All Rights Reserved.