numpyの小ネタ集②
前回より続きます。
行列の性質を調べる
1 |
import numpy as np |
1 2 3 4 5 6 7 8 9 10 |
# 行列を作成 matrix = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) # 行数、列数を表示 matrix.shape # 結果 (3, 4) |
1 2 3 4 |
matrix.size # 結果 12 |
1 2 3 4 |
matrix.ndim # 結果 2 |
最大値、最小値
1 2 3 4 |
# 行列の作成 matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) |
1 2 3 4 5 |
# 最大の要素を返す np.max(matrix) # 結果 9 |
1 2 3 4 5 |
# 最小の要素を返す np.min(matrix) # 結果 1 |
特定の軸を指定
1 2 3 4 |
# 行列の作成 matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) |
1 2 3 |
#axis=0 行方向 ↓ #axis=1 列方向 → #axis=2 (3次元配列の場合)奥行方向 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# 最大値 # 全体の最大値 np.max(matrix) # 結果 9 # 各列の最大値 np.max(matrix, axis=0) # axis=0 ↓ # 結果 array([7, 8, 9]) # 各行の最大値 np.max(matrix, axis=1) # axis=1 → # 結果 array([3, 6, 9]) |
平均、分散、標準偏差
1 2 3 4 |
# 行列を作成 matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 平均 # 全体の平均 np.mean(matrix) # 結果 5.0 # 各列の平均 np.mean(matrix, axis=0) # axis=0 ↓ # 結果 array([4., 5., 6.]) #(1, 4, 7)の平均 → 4. #(2, 5, 8)の平均 → 5. #(3, 6, 9)の平均 → 6. |
1 2 3 4 5 |
# 分散 np.var(matrix) # 結果 6.666666666666667 |
1 2 3 4 5 |
# 標準偏差 np.std(matrix) # 結果 2.581988897471611 |
まとめ
ここまでが基本中の基本というところです。
以下、詳細は省きますが、線形代数学で必要な行列の操作もいろんなメソッドが用意されています。
- 行列のランク(階数)
- 行列の行列式
- 行列の対角要素の取得
- 行列のトレースの計算
- 固有値の固有ベクトル
- 逆行列の算出
お勉強の範囲としては高校数学~大学数学のようです。単に例題として計算するのはメソッドに引数を入れればすぐ計算できますが、この計算はいつ何のために使うのかを知っておかないと、すぐに忘れそうですので、いずれ詳しくお勉強したいと思います。
今回はここまで。