NumPyはPythonにおける科学計算の礎であり、その力は主にN次元配列オブジェクトであるndarrayにあります。ndarrayを習得することは、NumPyを効果的に使用するために不可欠です。このチュートリアルでは、ndarrayの作成、属性、基本的な操作を網羅した、包括的な入門を提供します。
目次
ndarrayの定義
NumPyのndarray(N次元配列)は、同じ型とサイズの要素を保持する同種の多次元コンテナです。Pythonリストの高度に最適化された洗練されたバージョンと考えてください。多次元(1D、2D、3D、およびそれ以上)のデータを処理できます。さまざまなデータ型の要素を含むことができるPythonリストとは異なり、ndarrayは型の同質性を強制するため、パフォーマンスが大幅に向上します。この同質性により、ベクトル化された演算が可能になります。つまり、要素ごとにではなく、配列全体に同時に演算を適用することで、速度が劇的に向上します。
ndarrayの主な特性:
- 同種:すべての要素は同じデータ型を共有します。
- 多次元:さまざまな次元(1Dベクトル、2D行列、3Dテンソルなど)でデータを表現します。
- 固定サイズ:配列のサイズは作成時に固定され、サイズ変更には通常、新しい配列の作成が必要です。
- ベクトル化された演算:効率的な要素ごとの演算と配列レベルの演算をサポートします。
- メモリ効率:データを連続したメモリブロックに格納することで、パフォーマンスが向上します。
ndarrayの作成
NumPyの関数を使用して、ndarrayを作成するのは簡単です。
import numpy as np
# リストから
arr_1d = np.array([1, 2, 3, 4, 5])
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
# 特殊な関数を使用
arr_zeros = np.zeros((2, 3)) # ゼロの配列
arr_ones = np.ones((3, 2)) # 1の配列
arr_arange = np.arange(10) # 数値のシーケンス
arr_linspace = np.linspace(0, 1, 5) # 均等に間隔を空けた数値
arr_random = np.random.rand(2, 2) # ランダムな数値
print(arr_1d)
print(arr_2d)
print(arr_zeros)
print(arr_ones)
print(arr_arange)
print(arr_linspace)
print(arr_random)
ndarrayの属性
ndarrayオブジェクトは、その形状、データ型、サイズなどの情報を提供するいくつかの重要な属性を提供します。これらの属性を理解することは、ndarrayを効果的に操作するために重要です。
ndim
: 配列の次元の数(軸)。shape
: 各次元における配列のサイズを示すタプル(例:3×4行列の場合は(3, 4))。size
: 要素の総数。dtype
: 要素のデータ型(例:int32
、float64
、bool
)。itemsize
: 各要素のサイズ(バイト単位)。nbytes
: 配列の総サイズ(バイト単位)(itemsize * size
)。
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("次元の数:", arr.ndim)
print("形状:", arr.shape)
print("サイズ:", arr.size)
print("データ型:", arr.dtype)
print("要素サイズ:", arr.itemsize)
print("総バイト数:", arr.nbytes)
ndarrayの基本的な演算
NumPyは、効率的な要素ごとの演算と配列レベルの演算を提供します。単純な算術演算(+、-、*、/、//、%、**)はベクトル化されます。
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print("加算:", arr1 + arr2)
print("減算:", arr1 - arr2)
print("乗算:", arr1 * arr2)
print("除算:", arr1 / arr2)
行列乗算、ドット積など、より高度な演算も容易に使用できます。