numpy
は、Pythonで科学計算を行うための強力なライブラリです。特に多次元配列(ndarray
)を効率的に操作できる点が特徴で、データ分析や機械学習、統計、シミュレーションなどで広く使われています。
numpyの主な特徴
- 多次元配列(ndarray)
numpy
の基本データ構造であるndarray
を使用して、効率的に数値データを格納・操作できます。- リストに比べて計算速度が高速。
- 豊富な数値演算機能
- 配列全体の加減乗除や三角関数、指数関数などが簡単に使用可能。
- ベクトル・行列演算
- 数値計算や線形代数(行列積、固有値計算など)に最適化されています。
- ブロードキャスティング
- 配列間の演算を効率化する仕組みで、形状が異なる配列同士でも操作が可能。
- 科学計算のためのツール
- 統計量(平均、標準偏差など)や乱数生成、FFT(高速フーリエ変換)などの機能を提供。
numpyの基本操作
1. インストール
numpy
をインストールするには、以下のコマンドを実行します:
pip install numpy
2. 配列の作成
(1) 配列の初期化
import numpy as np # リストから配列を作成 a = np.array([1, 2, 3, 4]) print(a) # 出力: [1 2 3 4]
(2) 特殊な配列の作成
- 全てゼロの配列
zeros = np.zeros((3, 4)) print(zeros)
- 全て1の配列
ones = np.ones((2, 3)) print(ones)
- ランダム値を含む配列
random_array = np.random.rand(3, 3) print(random_array)
- 範囲を指定した配列
arange_array = np.arange(0, 10, 2) # 0から10未満まで2刻み print(arange_array)
3. 配列の基本操作
(1) 配列の形状操作
# 配列の形状を取得 a = np.array([[1, 2, 3], [4, 5, 6]]) print(a.shape) # 出力: (2, 3) # 配列の形状を変更 reshaped = a.reshape((3, 2)) print(reshaped)
(2) 配列のデータ型
# 配列のデータ型を確認 print(a.dtype) # 出力: int32など # データ型を変換 float_array = a.astype(float) print(float_array)
4. 配列の演算
(1) 要素ごとの演算
pythonコードをコピーするa = np.array([1, 2, 3]) b = np.array([4, 5, 6]) # 足し算 print(a + b) # 出力: [5 7 9] # 掛け算 print(a * b) # 出力: [4 10 18]
(2) 行列積
a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6], [7, 8]]) # 行列積 result = np.dot(a, b) print(result)
(3) ブロードキャスティング
pythonコードをコピーするa = np.array([1, 2, 3]) b = 2 # 配列とスカラーの演算 print(a * b) # 出力: [2 4 6]
5. 統計計算
data = np.array([1, 2, 3, 4, 5]) # 平均 print(data.mean()) # 出力: 3.0 # 合計 print(data.sum()) # 出力: 15 # 標準偏差 print(data.std()) # 出力: 1.4142135623730951
6. インデックスとスライス
a = np.array([10, 20, 30, 40, 50]) # インデックス指定 print(a[1]) # 出力: 20 # スライス print(a[1:4]) # 出力: [20 30 40] # 条件に基づくフィルタリング print(a[a > 30]) # 出力: [40 50]
応用的な使用例
1. データの標準化
data = np.array([10, 20, 30, 40, 50]) # 標準化 standardized = (data - data.mean()) / data.std() print(standardized)
2. サイコロのシミュレーション
# 1から6までの整数をランダムに生成 dice_rolls = np.random.randint(1, 7, size=10) print(dice_rolls)
3. データの欠損値処理
data = np.array([1, 2, np.nan, 4, 5]) # 欠損値を削除 cleaned_data = data[~np.isnan(data)] print(cleaned_data) # 欠損値を平均値で埋める data[np.isnan(data)] = np.nanmean(data) print(data)
numpyの強み
- 高速性
- 配列演算がCで実装されており、ネイティブなPythonのループよりも大幅に高速。
- 柔軟性
- ブロードキャスティングや多次元配列を用いて複雑な計算を簡潔に表現。
- 互換性
pandas
やscikit-learn
などのライブラリと連携が容易。
numpyは、データ分析や数値計算の基礎となるツールです。基本操作を学んだら、より高度な使用法(例: 線形代数、統計、シミュレーション)に進むと良いでしょう。