はじめに
NumPyは、数値計算に使用されるPythonライブラリです。配列や行列との操作に特化しており、科学的計算に強力なツールとなっています。この実験では、NumPy配列操作に関する以下の3つのトピックを学びます。
- 数学的演算
- ブロードキャスト
- ユニバーサル関数
NumPyは、数値計算に使用されるPythonライブラリです。配列や行列との操作に特化しており、科学的計算に強力なツールとなっています。この実験では、NumPy配列操作に関する以下の3つのトピックを学びます。
NumPyは、配列に対するさまざまな数学的演算を提供します。これらの演算は、1つまたは複数の配列に対して行うことができます。
ターミナルで次のコマンドを入力して、Pythonシェルを開きます。
python3
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のブロードキャスト機能のおかげで、array1
と array2
の間で要素ごとの演算を行います。小さい配列である 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を使って幅広い数値計算タスクを実行できるようになりました。