NumPyによる配列の操作
NumPyは、Pythonで数値計算を行うための強力なライブラリで、特に多次元配列(numpy.ndarray)の操作に優れています。この章では、NumPyによる配列操作の基本的な方法を学びます。配列の生成、形状の変更、要素の抽出や操作方法を説明していきます。
NumPy配列の生成
NumPy配列(ndarray)は、リストやタプルから生成できます。また、ゼロや任意の値で埋められた配列を生成することも可能です。以下に、基本的な配列生成の例を示します。
import numpy as np
# リストから配列を生成
arr = np.array([1, 2, 3, 4, 5])
# ゼロで埋められた配列を生成
zeros_arr = np.zeros((2, 3))
# 任意の値で埋められた配列を生成
full_arr = np.full((3, 3), 7)
# 1から10までの範囲で等間隔な値を持つ配列を生成
linspace_arr = np.linspace(1, 10, 5)
# 結果を表示
print(arr)
print(zeros_arr)
print(full_arr)
print(linspace_arr)
コードの説明
np.array
:リストやタプルからNumPy配列を生成します。np.zeros
:ゼロで埋められた配列を指定した形状で生成します。np.full
:任意の値で埋められた配列を指定した形状で生成します。np.linspace
:指定した範囲内で等間隔な値を持つ配列を生成します。
配列の形状操作
NumPy配列は、多次元の形状を持つことができます。配列の形状は、shape
プロパティを使って確認できます。また、reshape
メソッドを使うことで、配列の形状を変更できます。
import numpy as np
# 1次元配列
arr = np.array([1, 2, 3, 4, 5, 6])
# 配列の形状を変更(2行3列の配列に変換)
reshaped_arr = arr.reshape((2, 3))
# 結果を表示
print(reshaped_arr)
コードの説明
上記のコードでは、1次元配列を2行3列の2次元配列に変換しています。reshape
を使うことで、任意の形状に変換できますが、配列内の要素数が変わらない必要があります。
配列のスライシングとインデックス操作
NumPyでは、リスト同様に配列の一部をスライスして取り出すことができます。また、特定のインデックスの値にアクセスすることも簡単です。
import numpy as np
# 配列の生成
arr = np.array([10, 20, 30, 40, 50, 60])
# インデックス2からインデックス4までの値を取得
sliced_arr = arr[2:5]
# 結果を表示
print(sliced_arr)
# 2次元配列の特定の要素にアクセス
arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 行2, 列3の要素にアクセス
element = arr_2d[1, 2]
print(element)
コードの説明
arr[2:5]
:配列のインデックス2からインデックス4までの値をスライスして取得します。arr_2d[1, 2]
:2次元配列の特定の位置(行2, 列3)にある要素にアクセスします。
配列の演算
NumPy配列は、要素ごとの演算をサポートしており、効率的な数値計算が可能です。配列同士の加算、減算、乗算、除算などの演算が簡単に行えます。
import numpy as np
# 配列の生成
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
# 配列同士の演算
add = arr1 + arr2
multiply = arr1 * arr2
# 結果を表示
print("足し算:", add)
print("掛け算:", multiply)
コードの説明
arr1 + arr2
:2つの配列を要素ごとに足し合わせた結果を表示します。arr1 * arr2
:2つの配列を要素ごとに掛け合わせた結果を表示します。
まとめ
NumPyは配列操作において非常に強力な機能を提供しています。配列の生成、形状の変更、インデックスやスライスでの操作、さらには要素ごとの演算まで、さまざまな操作が簡単に行えます。これらの基本的な操作を理解することで、データサイエンスや数値計算において効率的にデータを処理することが可能になります。次のステップでは、NumPyの高度な操作やPandasとの連携を学んでいきましょう。