トップページ > コンテンツ > 機械学習関連 > 機械学習のライブラリ > numpy


0.numpyの導入

インストール手順等は割愛する。ぱっと試すのであれば、googleアカウントがあればすぐ使える
Colaboratoryが便利。必要なライブラリをインポートしてから試す。

import numpy as np

1. NumPy配列の基礎


1-1 配列の作成と初期化

説明 記述方法
多次元配列の定義 np.array(10,15,20],[10,25,30)
[x x x x x]という感じで、xは適当な値で配列初期化 np.empty(5)
[[x x x]
[x x x]]という感じで、xは適当な値で配列初期化
np.empty((2,3))
要素を0で初期化 np.zeros((3, 3))
要素を1で初期化 np.ones((3, 3))
自分で指定したい値で初期化 np.full((3, 3),9)
適当なランダムな値で初期化 np.random.rand(3,3)

1-2 配列の属性と情報

形状 a.shape
データ型 a.dtype
次元数 a.ndim
※aが行列定義の変数の場合

2. 配列操作

2-1.インデックスとスライシング

行列の要素にアクセスするには[行,列]の順に指定すればOK。:は全てという意味。
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(a[0, 1])  # 2
print(a[:, 1])  # [2 5 8]

2-2.配列の変形

a = np.array([[1, 2], [3, 4],[5, 6]])
a.reshape(2,3) #リサイズ
a.T #転置行列

2-3.配列の結合と分割

a = np.array([[1, 2, 3],[4, 5, 6]])
b = np.array([[7, 8, 9],[10,11,12]])
c = np.concatenate((a, b),1) #第2引数1は列の軸で結合
d = np.split(c, 2) #分割

3.数学的操作

3-1.基本的な演算

  • 行列 四則演算記号 数値の場合は、配列全ての要素に数値を足したり、引いたりできる
  • 行列 四則演算記号 行列の場合は、配列同士の計算ができる

※四則演算を行う場合は数学的な制約を思い出すことも必要。
  • 行列の加減算
加減算を行う行列は同じサイズ(同じ行数と列数)であること。
  • 行列の乗算
左側の行列の列数と右側の行列の行数が一致していること。
A(m×n行列)とB(n×p行列)の積C=ABはm×p行列になる。
  • 逆行列
逆行列は正方行列(行数と列数が等しい行列)に対してのみ定義される。
行列式がゼロでない場合のみ、逆行列が存在する。

※行列 * 行列は行列積ではなく、要素ごとの乗算である点は注意。
 行列積を表現したい場合は線形代数の章で紹介するnp.dot(a,b)またはa@bを使う。

3-2.線形代数

行列積 np.dot(a, b)またはa @ b
逆行列 a = np.array(1, 2], [3, 4)
np.linalg.inv(a)
固有値 a = np.array(1, 2], [3, 4)
np.linalg.eigvals(a)

3-3.統計関数

最大値 np.max(a)
最小値 np.min(a)
合計 np.sum(a)
平均 np.mean(a)
中央値 np.median(a)
分散 np.var(a)
標準偏差 np.std(a)

4.ブロードキャスティング

形状が異なる配列間で演算を行う際に、自動的に配列の形状を調整する機能を指す。
次元数が足りない方の配列を引き伸ばすことで計算を行う。
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([10, 20, 30])
a+b #[[11, 22, 33],
      [14, 25, 36]]

5.高度な操作

5-1.ユニバーサル関数

ndarrayの全要素に対して、演算を行う関数のこと。

a = np.array([[-1, 2, 3], [-4, 5, 6]])
np.abs(a) #絶対値の処理をするので、array([[1, 2, 3],[4, 5, 6]])を返す。

5-2.配列のソート

a = np.array([[-1, 2, 3], [4, -5, 6]])
np.sort(a) #rray([[-1,  2,  3],[-5,  4,  6]])を返す

6.勉強用サイト

最終更新:2025年03月04日 22:55