# NumPyの基本を完全マスター!配列操作からデータ処理まで総まとめ
- [NumPy公式ドキュメント](https://numpy.org/doc/stable/)
- [NumPy Quickstart Tutorial](https://numpy.org/doc/stable/user/quickstart.html)
## はじめに
NumPyは科学技術計算のための基本的なパッケージで、多次元配列オブジェクトや各種派生オブジェクトを提供します。本記事では、NumPyの基本的な機能から実践的な使い方までを解説します。
## 1. 基本的なインポートと配列作成
import numpy as np # 1次元配列の作成 arr1 = np.array([1, 2, 3, 4, 5]) # 2次元配列の作成 arr2 = np.array([[1, 2, 3], [4, 5, 6]]) # 特殊な配列の作成 zeros = np.zeros((3, 3)) # 0で埋めた配列 ones = np.ones((2, 4)) # 1で埋めた配列 rand = np.random.rand(3, 3) # 0-1の乱数配列 arange = np.arange(0, 10, 2) # 0から10まで2刻みの配列
## 2. 配列の基本プロパティ
```
プロパティ | 説明 | 使用例 |
---|---|---|
ndarray.shape | 配列の形状 | arr2.shape → (2, 3) |
ndarray.dtype | データ型 | arr1.dtype → int64 |
ndarray.size | 要素の総数 | arr2.size → 6 |
ndarray.ndim | 次元数 | arr2.ndim → 2 |
ndarray.itemsize | 各要素のバイトサイズ | arr1.itemsize → 8 |
ndarray.nbytes | 全要素の総バイトサイズ | arr1.nbytes → 40 |
```
## 3. 基本的な操作とメソッド
```
カテゴリ | メソッド/操作 | 説明 | 使用例 |
---|---|---|---|
配列操作 | reshape | 配列の形状を変更 | arr1.reshape(5,1) |
配列操作 | flatten | 多次元配列を1次元に平坦化 | arr2.flatten() |
配列操作 | transpose / T | 転置 | arr2.transpose() または arr2.T |
配列操作 | concatenate | 配列の結合 | np.concatenate([arr1, arr2]) |
数学関数 | sum | 合計を計算 | arr1.sum() |
数学関数 | mean | 平均を計算 | arr1.mean() |
数学関数 | std | 標準偏差を計算 | arr1.std() |
数学関数 | min, max | 最小値・最大値を取得 | arr1.min(), arr1.max() |
インデックス | argmin, argmax | 最小値・最大値のインデックスを取得 | arr1.argmin(), arr1.argmax() |
ソート | sort | 配列をソート | np.sort(arr1) |
ユニーク | unique | 重複を除いた要素を取得 | np.unique(arr1) |
```
## 4. インデックスとスライス
# 基本的なインデックス arr2[0, 1] # 1番目の行、2番目の列の要素 # スライス arr2[0:2, 1:] # 0-1行目、1列目以降 # ブール型インデックス mask = arr1 > 3 arr1[mask] # 3より大きい要素を取得 # 高度なインデックス indices = [0, 2] arr2[indices] # 指定したインデックスの行を取得
## 5. 数学的な操作
```
カテゴリ | 操作 | 説明 | 使用例 |
---|---|---|---|
基本演算 | +, -, *, / | 要素ごとの演算 | arr1 * 2 |
行列演算 | dot | 行列積 | np.dot(arr1, arr2) |
行列演算 | matmul | 行列積(@演算子) | arr1 @ arr2 |
数学関数 | exp | 指数関数 | np.exp(arr1) |
数学関数 | log | 自然対数 | np.log(arr1) |
数学関数 | sqrt | 平方根 | np.sqrt(arr1) |
三角関数 | sin, cos, tan | 三角関数 | np.sin(arr1) |
集計 | sum | 合計 | np.sum(arr1, axis=0) |
集計 | cumsum | 累積和 | np.cumsum(arr1) |
```
## 6. ブロードキャスト
NumPyの重要な機能の1つがブロードキャストです。異なる形状の配列間で演算を行う際に、自動的に配列が拡張されます。
# ブロードキャストの例 arr = np.array([[1, 2, 3], [4, 5, 6]]) scalar = 2 result = arr * scalar # 全要素に2を掛ける # 異なる形状の配列との演算 arr1 = np.array([[1], [2]]) arr2 = np.array([1, 2, 3]) result = arr1 + arr2 # arr1が自動的に拡張される
## 7. ファイル入出力
# 配列の保存 np.save('array.npy', arr1) # バイナリ形式 np.savetxt('array.txt', arr1) # テキスト形式 # 配列の読み込み loaded_arr = np.load('array.npy') # バイナリ形式 loaded_txt = np.loadtxt('array.txt') # テキスト形式
## まとめ
NumPyは配列操作や数値計算において非常に強力なツールです。この記事で紹介した基本的な機能を押さえることで、データ分析や科学技術計算の基礎を固めることができます。
## 実践的なTips
```
目的 | コード | 説明 |
---|---|---|
メモリ効率 | arr.astype('float32') | データ型を変更してメモリを節約 |
次元追加 | np.expand_dims(arr, axis=0) | 指定した軸に次元を追加 |
次元削除 | np.squeeze(arr) | サイズ1の次元を削除 |
配列の分割 | np.split(arr, 3) | 配列を指定数に分割 |
乱数シード | np.random.seed(42) | 乱数生成の再現性を確保 |
```
## 参考リンク