NumPyの30の基本的な活用例

プログラミング資料、学習プラン、ソースコード、ソフトウェアインストーラーなど!【[こちらをクリック]】!
NumPy (Numerical Python) は、Pythonにおける数値計算の中心的なライブラリです。多次元配列オブジェクト「ndarray」およびその配列を操作するための豊富な数学関数を提供します。科学技術計算、データ分析、機械学習などの分野において基礎的なツールとして利用されています。本記事では、NumPyの30の基本的な活用例を紹介し、読者がNumPyの主要機能を素早く習得できるよう支援します。
前準備:
  • まず、NumPyライブラリがインストールされていることを確認してください。もしインストールされていない場合は、pipコマンドを使ってインストールできます:
pip install numpy   

  • 次に、Pythonコード内でNumPyライブラリをインポートします:
import numpy as np   

1. 配列の作成 (5例)

  • NumPyは配列を作成するためのさまざまな方法を提供し、柔軟かつ効率的です。
例1: "array()"を使用して配列を作成
# データ   
data = [1, 2, 3, 4, 5]      
# コード   
arr = np.array(data)      
# 注釈   
# np.array()関数はリスト、タプル、または他のシーケンス型オブジェクトから配列を作成できます。   
# この例ではPythonリスト'data'からNumPy配列'arr'を作成しています。      
print(arr)   
print(type(arr))

例2: "arange()"を使用して等差数列を作成
# コード   
arr = np.arange(0, 10, 2)      
# 注釈   
# np.arange(start, stop, step)関数は等差数列を作成します。   
# 'start'は開始値(含まれます)、'stop'は終了値(含まれません)、'step'はステップ幅です。   
# ここでは0から10(含まれません)まで、ステップ幅2の配列を作成します。      
print(arr)   

例3: "zeros()"を使用してゼロ配列を作成
# コード   
arr_zeros = np.zeros((3, 4))      
# 注釈   
# np.zeros(shape)関数は指定された形状のゼロ配列を作成します。   
# 'shape'は配列の形状で、タプルまたは整数です。   
# ここでは3行4列のゼロ配列を作成します。      
print(arr_zeros) 

例4: "ones()"を使用して1で埋められた配列を作成
# コード   
arr_ones = np.ones((2, 5), dtype=int)      
# 注釈   
# np.ones(shape, dtype=float)関数は指定された形状の1で埋められた配列を作成します。デフォルトのデータ型はfloatです。   
# 'dtype'パラメータでデータ型を指定でき、ここでは整数intに設定しました。   
# 2行5列の1で埋められた整数配列を作成します。      
print(arr_ones)   

例5: "linspace()"を使用して線形等間隔配列を作成
# コード   
arr_linspace = np.linspace(0, 1, 5)      
# 注釈   
# np.linspace(start, stop, num)関数は線形等間隔配列を作成します。   
# 'start'は開始値、'stop'は終了値、'num'は要素数(開始値と終了値を含む)です。   
# ここでは0から1(含む)まで、5個の要素を持つ線形等間隔配列を作成します。      
print(arr_linspace) 

2. 配列の属性 (3例)

  • 配列の属性を理解することは、配列を理解し操作する上で重要です。
例6: 配列の形状"shape"を確認
# データ   
arr = np.array([[1, 2, 3], [4, 5, 6]])      
# コード   
shape = arr.shape      
# 注釈   
# 'shape'属性は配列の形状をタプル形式で返します。   
# 二次元配列の場合、形状は(行数, 列数)を示します。      
print(arr)   
print("配列の形状:", shape)   

例7: 配列のデータ型"dtype"を確認
# データ   
arr = np.array([1.0, 2.0, 3.0])      
# コード   
dtype = arr.dtype      
# 注釈   
# 'dtype'属性は配列要素のデータ型を返します。   
# NumPy配列のデータ型にはint, float, bool, objectなどが含まれます。      
print(arr)   
print("配列のデータ型:", dtype)   

例8: 配列の次元数"ndim"と要素数"size"を確認
# データ   
arr_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])      
# コード   
ndim = arr_3d.ndim   
size = arr_3d.size      
# 注釈   
# 'ndim'属性は配列の次元数(軸の数)を返します。   
# 'size'属性は配列内の要素総数を返します。      
print(arr_3d)   
print("配列の次元数:", ndim)   
print("配列の要素数:", size)   

3. インデックスとスライス (4例)

  • NumPy配列のインデックスとスライス操作は非常に柔軟であり、配列要素へのアクセスや変更が容易です。
例9: 一次元配列のインデックス
# データ   
arr = np.arange(10)      
# コード   
element = arr[5]      
# 注釈   
# 一次元配列のインデックスはPythonリストと同様に、角括弧[]とインデックス値を使用して要素にアクセスします。   
# インデックスは0から始まります。      
print(arr)   
print("インデックス5の要素:", element)   

例10: 二次元配列のインデックス
# データ   
arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])      
# コード   
element = arr_2d[1, 2] # または arr_2d[1][2]      
# 注釈   
# 二次元配列のインデックスは行インデックスと列インデックスの2つの値を使用します。   
# arr_2d[行インデックス, 列インデックス]またはarr_2d[行インデックス][列インデックス]の形式で要素にアクセスできます。      
print(arr_2d)   
print("第二行第三列の要素:", element)   

例11: 一次元配列のスライス
# データ   
arr = np.arange(10)      
# コード   
slice_arr = arr[2:7]      
# 注釈   
# 一次元配列のスライスは[start:stop:step]の形式で表現されます。   
# 'start'は開始インデックス(含まれます)、'stop'は終了インデックス(含まれません)、'step'はステップ幅(省略可能)です。   
# ここではインデックス2から7(含まれません)までの要素をスライスします。      
print(arr)   
print("スライス結果:", slice_arr)   

例12: 二次元配列のスライス
# データ   
arr_2d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])      
# コード   
slice_arr = arr_2d[:2, 1:3]      
# 注釈   
# 二次元配列のスライスは行と列の両方に適用できます。   
# arr_2d[:2, 1:3]は最初の2行(インデックス0と1)と列インデックス1から3(含まれません)の部分をスライスします。      
print(arr_2d)   
print("スライス結果:")   
print(slice_arr)   

4. 配列演算 (6例)

  • NumPy配列は要素レベルでの算術演算をサポートし、ブロードキャスト機構によりより簡潔で効率的な演算が可能です。
例13: 配列とスカラーの加算
# データ   
arr = np.arange(5)      
# コード   
result = arr + 2      
# 注釈   
# 配列とスカラーの算術演算では、スカラーが配列の各要素にブロードキャストされます。   
# ここでは配列'arr'の各要素に2を加えています。      
print(arr)   
print("配列とスカラーの加算結果:", result)   

例14: 配列同士の加算
# データ   
arr1 = np.array([1, 2, 3])   
arr2 = np.array([4, 5, 6])      
# コード   
result = arr1 + arr2      
# 注釈   
# 同じ形状の配列同士の算術演算では、対応する要素同士で演算が行われます。   
# ここでは配列'arr1'と'arr2'の対応する要素を加算しています。      
print("配列1:", arr1)   
print("配列2:", arr2)   
print("配列の加算結果:", result)   

例15: 配列の要素積と行列積
# データ   
arr1 = np.array([[1, 2], [3, 4]])   
arr2 = np.array([[5, 6], [7, 8]])      
# コード   
element_product = arr1 * arr2 # 要素レベルの乗算   
matrix_product = np.dot(arr1, arr2) # 行列積      
# 注釈   
# '*'演算子は要素レベルの乗算を実行し、対応する要素同士を乗算します。   
# np.dot(a, b)関数は行列積を計算します。      
print("配列1:\n", arr1)   
print("配列2:\n", arr2)   
print("要素レベル乗算結果:\n", element_product)   
print("行列積結果:\n", matrix_product)   

例16: 配列の比較演算
# データ   
arr1 = np.array([1, 2, 3, 4, 5])   
arr2 = np.array([3, 2, 5, 1, 4])      
# コード   
equal_arr = arr1 == arr2   
greater_arr = arr1 > arr2      
# 注釈   
# 配列の比較演算は、対応する要素の比較結果を示すブール配列を返します。   
# '=='は等価比較、'>'は大小比較です。      
print("配列1:", arr1)   
print("配列2:", arr2)   
print("等価比較結果:", equal_arr)   
print("大小比較結果:", greater_arr)   

例17: ブロードキャスト機構の利用
# データ   
arr_1d = np.array([1, 2, 3])   
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])      
# コード   
result = arr_2d + arr_1d      
# 注釈   
# ブロードキャスト機構により、形状が完全に一致しない配列間でも演算が可能です。   
# ここで、'arr_1d'の形状(3,)は'arr_2d'の各行にブロードキャストされ、配列の加算が可能になります。      
print("一次元配列:", arr_1d)   
print("二次元配列:\n", arr_2d)   
print("ブロードキャスト加算結果:\n", result)   

例18: 一般的な関数 (ufunc)
# データ   
arr = np.arange(1, 6)      
# コード   
sqrt_arr = np.sqrt(arr)   
exp_arr = np.exp(arr)      
# 注釈   
# NumPyは多くの一般的な関数(ufunc)を提供し、配列の要素レベルでの操作が可能です。   
# np.sqrt(arr)は配列要素の平方根を計算し、np.exp(arr)は指数関数を計算します。      
print(arr)   
print("平方根結果:", sqrt_arr)   
print("指数関数結果:", exp_arr)   

5. 一般的な関数 (7例)

  • NumPyは配列の統計、並び替え、探索などの操作を行うための豊富な関数を提供します。
例19: 合計"sum()"
# データ   
arr = np.arange(1, 10).reshape((3, 3))      
# コード   
sum_all = np.sum(arr) # 全要素合計   
sum_axis0 = np.sum(arr, axis=0) # 列ごとの合計   
sum_axis1 = np.sum(arr, axis=1) # 行ごとの合計      
# 注釈   
# np.sum(arr, axis=None)関数は配列要素の合計を計算します。   
# axis=None(デフォルト)はすべての要素の合計、axis=0は列ごとの合計、axis=1は行ごとの合計です。      
print("配列:\n", arr)   
print("全要素合計:", sum_all)   
print("列ごとの合計:", sum_axis0)   
print("行ごとの合計:", sum_axis1)   

例20: 平均"mean()"
# データ   
arr = np.array([[1, 2, 3], [4, 5, 6]])      
# コード   
mean_all = np.mean(arr) # 全要素平均   
mean_axis0 = np.mean(arr, axis=0) # 列ごとの平均      
# 注釈   
# np.mean(arr, axis=None)関数は配列要素の平均を計算します。   
# axisパラメータの使い方はnp.sum()と似ています。      
print("配列:\n", arr)   
print("全要素平均:", mean_all)   
print("列ごとの平均:", mean_axis0)   

例21: 最大値"max()"と最小値"min()"
# データ   
arr = np.random.randint(1, 10, size=(3, 4)) # ランダム整数配列の生成      
# コード   
max_val = np.max(arr) # 最大値   
min_val = np.min(arr) # 最小値      
# 注釈   
# np.max(arr)とnp.min(arr)はそれぞれ配列の最大値と最小値を計算します。      
print("配列:\n", arr)   
print("最大値:", max_val)   
print("最小値:", min_val)   

例22: 最大値と最小値のインデックス"argmax()"と"argmin()"
# データ   
arr = np.array([3, 1, 4, 1, 5, 9, 2, 6])      
# コード   
argmax_index = np.argmax(arr) # 最大値のインデックス   
argmin_index = np.argmin(arr) # 最小値のインデックス      
# 注釈   
# np.argmax(arr)とnp.argmin(arr)はそれぞれ配列内の最大値と最小値のインデックスを返します。      
print("配列:", arr)   
print("最大値のインデックス:", argmax_index)   
print("最小値のインデックス:", argmin_index)   

例23: 並び替え"sort()"
# データ   
arr = np.random.randint(1, 20, size=10) # ランダム整数配列の生成      
# コード   
sorted_arr = np.sort(arr) # 並び替え後の配列   
arr.sort() # オリジナル配列を直接変更する並び替え      
# 注釈   
# np.sort(arr)は並び替え後の新しい配列を返し、オリジナル配列は変更しません。   
# arr.sort()は直接オリジナル配列を並び替えます。      
print("オリジナル配列:", arr) # 注意:arrはすでに並び替えられています   
print("並び替え後の配列:", sorted_arr)   

例24: 重複要素の削除"unique()"
# データ   
arr = np.array([1, 2, 2, 3, 3, 3, 4, 4, 4, 4])      
# コード   
unique_arr = np.unique(arr)      
# 注釈   
# np.unique(arr)関数は配列のユニークな値を返し、並び替えられます。      
print("オリジナル配列:", arr)   
print("重複削除後の配列:", unique_arr)   

例25: 条件付き探索"where()"
# データ   
arr = np.arange(10)      
# コード   
indices = np.where(arr > 5)   
values = arr[np.where(arr > 5)] # または直接arr[arr > 5]      
# 注釈   
# np.where(condition)関数は条件に合う要素のインデックスを返します。   
# 返されたインデックスを使用して条件に合う値を抽出できます。      
print("配列:", arr)   
print("5より大きい要素のインデックス:", indices)   
print("5より大きい要素の値:", values)   

6. 線形代数 (5例)

  • NumPyの"linalg"サブモジュールは、一般的な線形代数演算機能を提供します。
例26: 行列の転置"T"または"transpose()"
# データ   
matrix = np.array([[1, 2, 3], [4, 5, 6]])      
# コード   
transposed_matrix = matrix.T # .T属性を使用   
# transposed_matrix = matrix.transpose() 
# transpose()関数を使用      
# 注釈   
# .T属性とtranspose()関数はどちらも行列の転置を返します。      
print("オリジナル行列:\n", matrix)   
print("転置行列:\n", transposed_matrix)   

例27: 行列のトレース"trace()"
# データ   
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])      
# コード   
trace_val = np.trace(matrix)      
# 注釈   
# np.trace(matrix)関数は行列のトレース(主対角成分の和)を計算します。      
print("行列:\n", matrix)   
print("行列のトレース:", trace_val)   

例28: 行列式の計算"linalg.det()"
# データ   
matrix = np.array([[1, 2], [3, 4]])      
# コード   
determinant = np.linalg.det(matrix)      
# 注釈   
# np.linalg.det(matrix)関数は行列式を計算します。      
print("行列:\n", matrix)   
print("行列式:", determinant)   

例29: 逆行列の計算"linalg.inv()"
# データ   
matrix = np.array([[1, 2], [3, 4]])      
# コード   
inverse_matrix = np.linalg.inv(matrix)      
# 注釈   
# np.linalg.inv(matrix)関数は逆行列を計算します。   
# 逆行列は正則行列(行列式が0ではない)のみ計算可能です。      
print("オリジナル行列:\n", matrix)   
print("逆行列:\n", inverse_matrix)   

例30: 固有値と固有ベクトルの計算"linalg.eig()"
# データ   
matrix = np.array([[1, -2], [2, -3]])      
# コード   
eigenvalues, eigenvectors = np.linalg.eig(matrix)      
# 注釈   
# np.linalg.eig(matrix)関数は行列の固有値と固有ベクトルを計算します。   
# 戻り値のeigenvaluesは固有値の配列、eigenvectorsは固有ベクトルの行列(列ベクトルが固有ベクトル)です。      
print("行列:\n", matrix)   
print("固有値:", eigenvalues)   
print("固有ベクトル:\n", eigenvectors)   

  • 本記事では、NumPyの30の基本的な活用例について紹介しました。配列の作成、属性の確認、インデックスとスライス、配列演算、一般的な関数、線形代数など、主要な機能をカバーしています。これらの例を学ぶことで、NumPyの基礎を素早く習得し、科学技術計算やデータ分析のタスクに活かすことができます。

まとめ

  • 最後に、プログラミング学習において焦らず、計画的に進めていくことを願っています。どんなことでも極めることって難しいものです。頑張ってください!信じてください!

最終特典

  • 最後に、Pythonの完全な学習資料を無料で共有します。現状に満足できないが方向性がない方のために、一緒に学んでいきましょう。
プログラミング資料、学習プラン、ソースコード、ソフトウェアインストーラーなど!【[ここをクリック]】で受け取れます!
  • ① Pythonのすべての方向の学習プラン、どの分野を学ぶべきかを明確に
  • ② 100以上のPython講座動画、必須の基礎、クローリング、データ分析を含む
  • ③ 100以上のPython実践例、理論だけではなく実際の応用
  • ④ ハワイawei製品の独自Python漫画教材、スマートフォンでも学習可能

下記のQRコードをスキャンして【100%無料】を受け取れます

タグ: NumPy Python 配列 線形代数 データ分析

10月2日 16:30 投稿