NumPyは、Pythonで科学計算を行うための基本的なライブラリであり、高性能な多次元配列オブジェクトを提供します。NumPyは、数値計算やデータ分析、機械学習などの分野で広く利用されています。
Numpyとは
NumPy(Numerical Python)は、Pythonで科学計算を行うためのライブラリです。多次元配列オブジェクトであるndarrayや、高度な数学関数、乱数生成機能、線形代数、フーリエ変換などを提供します。
インストール
まず、NumPyを使用するには、ライブラリをインストールする必要があります。以下のコマンドを使用します:
pip install numpy
基本的な使い方
NumPyを使用するためには、import
文を使ってインポートします。
import numpy as np
配列の作成
NumPyの基本的な機能は、配列(ndarray)の作成です。配列はリストやタプルから作成できます。
import numpy as np
# リストから1次元配列を作成
array1 = np.array([1, 2, 3, 4, 5])
print("1次元配列:", array1)
# リストのリストから2次元配列を作成
array2 = np.array([[1, 2, 3], [4, 5, 6]])
print("2次元配列:\n", array2)
配列の操作
配列の操作には、スライシング、形状変更、結合、分割などがあります。
# 配列のスライシング
print("配列の一部:", array1[1:4])
# 配列の形状変更
array3 = np.reshape(array2, (3, 2))
print("形状変更:\n", array3)
# 配列の結合
array4 = np.concatenate((array1, array1))
print("結合された配列:", array4)
# 配列の分割
array5, array6 = np.split(array4, 2)
print("分割された配列1:", array5)
print("分割された配列2:", array6)
乱数の生成
NumPyには乱数生成機能があり、さまざまな分布に従う乱数を生成できます。
# 一様分布に従う乱数
random_array1 = np.random.rand(3, 3)
print("一様分布に従う乱数:\n", random_array1)
# 正規分布に従う乱数
random_array2 = np.random.randn(3, 3)
print("正規分布に従う乱数:\n", random_array2)
# 整数の乱数
random_array3 = np.random.randint(1, 10, size=(3, 3))
print("整数の乱数:\n", random_array3)
線形代数
NumPyは、線形代数に関連する多くの関数を提供しています。例えば、行列積、行列の逆、行列式、固有値などです。
# 行列の積
matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])
product = np.dot(matrix1, matrix2)
print("行列の積:\n", product)
# 行列の逆
inverse = np.linalg.inv(matrix1)
print("行列の逆:\n", inverse)
# 行列式
determinant = np.linalg.det(matrix1)
print("行列式:", determinant)
# 固有値
eigenvalues, eigenvectors = np.linalg.eig(matrix1)
print("固有値:", eigenvalues)
print("固有ベクトル:\n", eigenvectors)
実例
例題1: 配列の統計量計算
以下の例では、配列の平均、中央値、標準偏差を計算します。
data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
mean = np.mean(data)
median = np.median(data)
std_dev = np.std(data)
print("平均:", mean)
print("中央値:", median)
print("標準偏差:", std_dev)
例題2: サインカーブのプロット
以下の例では、NumPyを使用してサインカーブを生成し、Matplotlibを使用してプロットします。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)
plt.plot(x, y)
plt.xlabel("x軸")
plt.ylabel("y軸")
plt.title("サインカーブ")
plt.show()