NumPyとは
NumPy(Numerical Python)は、Pythonで数値計算を高効率で行うためのライブラリです。大規模な多次元配列の演算や、数学・統計関数を提供します。
python
import numpy as np # npという別名で使うのが慣習# NumPyのバージョン確認np.__version__ndarray(NumPy配列)
NumPyの中心となるデータ型が ndarray(N-dimensional array)です。
python
import numpy as np# 1次元配列(ベクトル)a = np.array([1, 2, 3, 4, 5])print(a) # [1 2 3 4 5]print(a.dtype) # int64print(a.shape) # (5,)# 2次元配列(行列)m = np.array([[1, 2, 3], [4, 5, 6]])print(m.shape) # (2, 3)(2行3列)配列の作成
python
import numpy as npnp.zeros(5) # array([0., 0., 0., 0., 0.])np.ones((2, 3)) # 2行3列の1行列np.eye(3) # 3×3の単位行列np.arange(0, 10, 2) # array([0, 2, 4, 6, 8])np.linspace(0, 1, 5) # array([0., 0.25, 0.5, 0.75, 1.])# 乱数np.random.seed(42)np.random.rand(3) # 一様分布(0〜1)np.random.randn(3, 3) # 標準正規分布np.random.randint(0, 10, 5) # 整数乱数ベクトル演算(ブロードキャスト)
NumPy配列の演算は要素ごと(element-wise)に行われます。Pythonのリストとは異なります。
python
import numpy as npa = np.array([1, 2, 3, 4, 5])# スカラーとの演算(リストではできない)a + 10 # array([11, 12, 13, 14, 15])a * 2 # array([2, 4, 6, 8, 10])a ** 2 # array([1, 4, 9, 16, 25])# 配列同士の演算b = np.array([10, 20, 30, 40, 50])a + b # array([11, 22, 33, 44, 55])a * b # array([10, 40, 90, 160, 250])インデックスとスライス
python
import numpy as npa = np.array([10, 20, 30, 40, 50])a[0] # 10a[-1] # 50a[1:4] # array([20, 30, 40])# 2次元配列m = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])m[0, :] # array([1, 2, 3])(0行目全体)m[:, 1] # array([2, 5, 8])(1列目全体)m[1, 2] # 6(1行2列)# ブール配列によるインデックスa = np.array([1, 5, 3, 8, 2, 9, 4])a[a > 4] # array([5, 8, 9])(4より大きい要素のみ)NumPyの数学関数
python
import numpy as npa = np.array([1, 4, 9, 16, 25])np.sqrt(a) # array([1., 2., 3., 4., 5.])np.log(a) # 自然対数np.exp(a) # e^x# 統計関数a = np.array([3, 1, 4, 1, 5, 9, 2, 6])np.sum(a) # 31np.mean(a) # 3.875np.std(a) # 標準偏差np.max(a) # 9np.min(a) # 1np.sort(a) # array([1, 1, 2, 3, 4, 5, 6, 9])行列演算
python
import numpy as npA = np.array([[1, 2], [3, 4]])B = np.array([[5, 6], [7, 8]])# 行列積np.dot(A, B) # または A @ B# array([[19, 22], [43, 50]])# 転置A.T # array([[1, 3], [2, 4]])# 逆行列np.linalg.inv(A)# 固有値・固有ベクトルeigenvalues, eigenvectors = np.linalg.eig(A)練習: NumPyで統計計算
NumPyを使って、テストの点数データから平均・標準偏差・最高点・最低点を計算してください。
練習: 行列の操作
3×3の行列を作成し、各行の合計・各列の平均を求めてください。