Python

【Python】第7章第9回:numpyを使った数値計算の基本

本記事では、Pythonライブラリのnumpyを用いた数値計算の基礎について解説します。numpyの基本操作を理解し、効率的なデータ処理を学びましょう。

0. 記事の概要

この記事を読むメリット

  • 高速計算の基礎理解:numpyを活用することで、効率的な数値計算を実現できます。
  • 実践的なスキルの習得:多次元配列や数値計算に必要な操作を学べます。
  • データ処理の応用力向上:numpyを利用して統計やデータ解析を始められます。

この記事で学べること

  • numpyの基本概念とインストール方法
  • 基本的な配列操作(生成、スライス、計算)
  • 実践的な数値計算例

1. numpyとは何か?

1.1 基本概念

numpy(Numerical Python)は、Pythonで効率的な数値計算を可能にするライブラリです。以下のような特徴を持ちます。

  • 多次元配列(ndarray): 高速な計算を実現するデータ構造
  • 多数の数学関数: 統計や線形代数のための関数を提供
  • 高速性: C言語ベースで構築され、高速に動作

1.2 インストール方法

# numpyのインストール
pip install numpy

2. 基本的な配列操作

2.1 配列の生成

# 配列の生成
import numpy as np

# リストから配列を作成
arr = np.array([1, 2, 3, 4, 5])

# 配列の初期化
zeros = np.zeros((2, 3))  # 全要素が0の2x3配列
ones = np.ones((3, 3))   # 全要素が1の3x3配列

print(arr)
print(zeros)
print(ones)

2.2 配列のスライスと計算

# 配列のスライスと計算
arr = np.array([10, 20, 30, 40, 50])

# スライス
print(arr[1:4])  # [20, 30, 40]

# 要素ごとの演算
print(arr * 2)  # [20, 40, 60, 80, 100]
動作解説
  • 配列生成: np.zeros()np.ones()を使用して特定の形状を持つ配列を作成します。
  • スライス: 配列から特定の範囲を切り出します。
  • 演算: 配列全体に対して要素ごとの計算を実行します。

3. 応用例:統計とデータ解析

3.1 配列の統計処理

# 配列の統計処理
arr = np.array([1, 2, 3, 4, 5])

print(np.mean(arr))  # 平均
print(np.median(arr))  # 中央値
print(np.std(arr))  # 標準偏差

3.2 データの正規化

# データの正規化
data = np.array([10, 20, 30, 40, 50])
normalized_data = (data - np.min(data)) / (np.max(data) - np.min(data))
print(normalized_data)
動作解説
  1. 統計処理: 配列全体の平均や標準偏差を計算します。
  2. 正規化: データを0〜1の範囲にスケールします。

4. 練習問題

以下の課題に挑戦してみましょう。

  1. 2次元配列を作成し、特定の行や列をスライスして取り出してください。
  2. ランダムな配列を生成し、その配列の最大値と最小値を計算してください。
  3. 配列内の値を2倍し、新しい配列として出力してください。

5. 練習問題の解答と解説

問1〜3の解答例

# 問1: 2次元配列のスライス
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr[1, :])  # 第2行を取得
print(arr[:, 1])  # 第2列を取得

# 問2: ランダム配列の最大値と最小値
random_arr = np.random.rand(5)
print(f"最大値: {np.max(random_arr)}, 最小値: {np.min(random_arr)}")

# 問3: 配列内の値を2倍
original = np.array([1, 2, 3, 4, 5])
doubled = original * 2
print(doubled)

6. まとめ

本記事では、numpyを用いた数値計算の基本操作を学びました。次はこれらを応用して、より高度なデータ解析や機械学習に挑戦してみましょう。