はじめに

NumPy は、数値計算に使用される Python ライブラリです。配列や行列との操作に特化しており、科学的計算に強力なツールとなっています。この実験では、NumPy 配列操作に関する以下の 3 つのトピックを学びます。

  1. 数学的演算
  2. ブロードキャスト
  3. ユニバーサル関数
これは Guided Lab です。学習と実践を支援するためのステップバイステップの指示を提供します。各ステップを完了し、実践的な経験を積むために、指示に注意深く従ってください。過去のデータによると、この 初級 レベルの実験の完了率は 98%です。学習者から 97% の好評価を得ています。

数学的演算

NumPy は、配列に対するさまざまな数学的演算を提供します。これらの演算は、1 つまたは複数の配列に対して行うことができます。

Python シェルを開く

ターミナルで次のコマンドを入力して、Python シェルを開きます。

python3

NumPy をインポートする

NumPy は既にインストールされていますので、Python コードでインポートすることができます。

import numpy as np

要素ごとの演算

要素ごとの演算とは、配列の各要素に対して行われる演算のことです。

2 つの配列を作成して、いくつかの要素ごとの演算を行ってみましょう。

## 2 つの配列を作成
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])

## 2 つの配列を加算
print("2 つの配列を加算:", arr1 + arr2)

## 2 つの配列を減算
print("2 つの配列を減算:", arr1 - arr2)

## 2 つの配列を乗算
print("2 つの配列を乗算:", arr1 * arr2)

## 2 つの配列を除算
print("2 つの配列を除算:", arr1 / arr2)

## 2 つの配列の除算後の余りを求める
print("2 つの配列の剰余:", arr1 % arr2)

## 配列の要素をべき乗する
print("配列をべき乗:", arr1 ** 2)

出力:

2つの配列を加算:  [ 6  8 10 12]
2つの配列を減算:  [-4 -4 -4 -4]
2つの配列を乗算:  [ 5 12 21 32]
2つの配列を除算:  [0.2        0.33333333 0.42857143 0.5       ]
2つの配列の剰余:  [1 2 3 4]
配列をべき乗:  [ 1  4  9 16]

配列全体に対する演算

配列全体に対する演算とは、配列全体に対して行われる演算のことです。

1 つの配列を作成して、いくつかの配列全体に対する演算を行ってみましょう。

## 配列を作成
arr = np.array([1, 2, 3, 4])

## 配列のすべての要素の合計を求める
print("配列の合計:", np.sum(arr))

## 配列のすべての要素の積を求める
print("配列の積:", np.prod(arr))

## 配列の最小要素を求める
print("配列の最小要素:", np.min(arr))

## 配列の最大要素を求める
print("配列の最大要素:", np.max(arr))

## 配列のすべての要素の平均を求める
print("配列の平均:", np.mean(arr))

## 配列のすべての要素の標準偏差を求める
print("配列の標準偏差:", np.std(arr))

出力:

配列の合計:  10
配列の積:  24
配列の最小要素:  1
配列の最大要素:  4
配列の平均:  2.5
配列の標準偏差:  1.118033988749895

ブロードキャスト

ブロードキャストは、NumPy の機能であり、異なる形状の配列間で要素ごとの演算を可能にします。ブロードキャストは、異なる次元の配列を扱う際に特に便利です。

1 つの配列を作成して、いくつかのブロードキャスト演算を行ってみましょう。

## 異なる形状の 2 つの配列を作成
array1 = np.array([1, 2, 3])
array2 = np.array([[4, 5, 6], [7, 8, 9]])

## 小さい配列を大きい配列にブロードキャスト
print("ブロードキャストを使って 2 つの配列を加算:", array1 + array2)

print("ブロードキャストを使って 2 つの配列を減算:", array1 - array2)

print("ブロードキャストを使って 2 つの配列を乗算:", array1 * array2)

print("ブロードキャストを使って 2 つの配列を除算:", array1 / array2)

出力:

ブロードキャストを使って2つの配列を加算:  [[ 5  7  9]
                                         [ 8 10 12]]

ブロードキャストを使って2つの配列を減算:  [[-3 -3 -3]
                                              [-6 -6 -6]]

ブロードキャストを使って2つの配列を乗算:  [[ 4 10 18]
                                              [7 16 27]]

ブロードキャストを使って2つの配列を除算:  [[0.25       0.4        0.5       ]
                                           [0.14285714 0.25       0.33333333]]

上記のコードでは、形状 (3,) の array1 と形状 (2,3) の array2 の 2 つの配列を作成します。NumPy のブロードキャスト機能のおかげで、array1array2 の間で要素ごとの演算を行います。小さい配列である array1 が、要素ごとの演算を行うために大きい配列である array2 にブロードキャストされます。ブロードキャストにより、異なる形状の配列に対して演算を行うことが可能になります。

ユニバーサル関数

ユニバーサル関数(または ufunc)は、要素ごとの方法で配列に対して操作する関数です。これらは、配列に対して高速かつ効率的な演算を提供します。

1 つの配列を作成して、いくつかの ufunc を実行してみましょう。

## 配列を作成
arr = np.array([1, 2, 3, 4])

## 配列の各要素の平方根を求める
print("配列の平方根:", np.sqrt(arr))

## 配列の各要素の指数関数を求める
print("配列の指数関数:", np.exp(arr))

## 配列の各要素のサインを求める
print("配列のサイン:", np.sin(arr))

## 配列の各要素のコサインを求める
print("配列のコサイン:", np.cos(arr))

## 配列の各要素の自然対数を求める
print("配列の自然対数:", np.log(arr))

出力:

配列の平方根:  [1.         1.41421356 1.73205081 2.        ]
配列の指数関数:  [ 2.71828183  7.3890561  20.08553692 54.59815003]
配列のサイン:  [ 0.84147098  0.90929743  0.14112001 -0.7568025 ]
配列のコサイン:  [ 0.54030231 -0.41614684 -0.9899925  -0.65364362]
配列の自然対数:  [0.         0.69314718 1.09861229 1.38629436]

まとめ

おめでとうございます!これで、数学的演算、ブロードキャスト、ユニバーサル関数を含む NumPy 配列操作について学ぶことができました。この知識を使えば、Python を使って幅広い数値計算タスクを実行できるようになりました。