4. Numpyを学ぶ

numpy は、Pythonで科学計算を行うための強力なライブラリです。特に多次元配列(ndarray)を効率的に操作できる点が特徴で、データ分析や機械学習、統計、シミュレーションなどで広く使われています。


numpyの主な特徴

  1. 多次元配列(ndarray)
    • numpy の基本データ構造である ndarray を使用して、効率的に数値データを格納・操作できます。
    • リストに比べて計算速度が高速。
  2. 豊富な数値演算機能
    • 配列全体の加減乗除や三角関数、指数関数などが簡単に使用可能。
  3. ベクトル・行列演算
    • 数値計算や線形代数(行列積、固有値計算など)に最適化されています。
  4. ブロードキャスティング
    • 配列間の演算を効率化する仕組みで、形状が異なる配列同士でも操作が可能。
  5. 科学計算のためのツール
    • 統計量(平均、標準偏差など)や乱数生成、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の強み

  1. 高速性
    • 配列演算がCで実装されており、ネイティブなPythonのループよりも大幅に高速。
  2. 柔軟性
    • ブロードキャスティングや多次元配列を用いて複雑な計算を簡潔に表現。
  3. 互換性
    • pandasscikit-learn などのライブラリと連携が容易。

numpyは、データ分析や数値計算の基礎となるツールです。基本操作を学んだら、より高度な使用法(例: 線形代数、統計、シミュレーション)に進むと良いでしょう。

タイトルとURLをコピーしました