こんにちは!
皆さんはNumPy配列の演算方法を知っていますか?
NumPy配列の演算はブロードキャストなど、少し特徴があって面白いですよ。
今回の記事では、NumPy配列の様々な演算方法について以下の内容を紹介します。
- NumPy配列の様々な演算方法
- 合計・最大値・最小値・平均値の演算方法
- 行列の演算方法
- 内積・外積の演算方法
以降のプログラムでは、簡略化のため、以下のNumPyライブラリのインポートは省略しますが、プログラムを実行する際には必ず忘れないようにしましょう。
import numpy as np
配列の演算
NumPy配列では、配列に演算を行うと、全ての要素に対して演算が行われます。
配列の四則演算
以下のプログラムは、NumPy配列の四則演算を行うプログラムです。
a = np.array([[1, 2], [3, 4]])
b = a + 2
c = a - 2
d = a * 2
e = a / 2
print(b)
print(c)
print(d)
print(e)
実行結果
[[3 4]
[5 6]]
[[-1 0]
[ 1 2]]
[[2 4]
[6 8]]
[[0.5 1. ]
[1.5 2. ]]
NumPy配列の全ての要素に対して、2を足したり引いたりしていますね。
配列の比較演算
四則演算と同様に比較演算も全ての要素に対して演算が行われます。
以下のプログラムは、a>5に合致する要素の位置を調べるプログラムです。
a = np.array([6, 1, 2, 9, 7, 2])
b = (a>5)
print(b)
実行結果
[ True False False True True False]
Trueの位置が条件に合う部分で、Falseの位置が条件に合わない部分です。
配列のすべての要素に対して演算が行われているのがわかると思います。
合計、最大値、最小値、平均値
NumPy配列では、通常のリストなどと同様に、配列の要素の合計、最大値、最小値、平均値を簡単に求めることができます。
合計
合計を求めるには、「sum()」を使用します。
以下のプログラムは、配列の要素の合計を表示するプログラムです。
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.sum())
print(a.sum(0)) #[1+4, 2+5, 3+6]
print(a.sum(1)) #[1+2+3, 4+5+6]
実行結果
21
[5 7 9]
[ 6 15]
引数が0の時は、各列の合計の配列を、
引数が1の時は、各行の合計の配列を返します。
最大値
最大値を求めるには、「max()」を使用します。
以下のプログラムは、配列の中の最大の要素を表示するプログラムです。
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.max())
print(a.max(0))
print(a.max(1))
実行結果
6
[4 5 6]
[3 6]
引数が0の時は、各列の最大の要素の配列を、
引数が1の時は、各行の最大の要素の配列を返します。
最小値
最小値を求めるには、「min()」を使用します。
以下のプログラムは、配列の中の最小の要素を表示するプログラムです。
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.min())
print(a.min(0))
print(a.min(1))
実行結果
1
[1 2 3]
[1 4]
引数が0の時は、各列の最小の要素の配列を、
引数が1の時は、各行の最小の要素の配列を返します。
平均値
平均値を求めるには、「mean()」を使用します。
以下のプログラムは、配列の要素の平均値を表示するプログラムです。
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.mean())
print(a.mean(0))
print(a.mean(1))
実行結果
3.5
[2.5 3.5 4.5]
[2. 5.]
引数が0の時は、各列の要素の平均の配列を、
引数が1の時は、各行の要素の平均の配列を返します。
行列の演算
NumPy配列は、行列の演算を行うのに適しています。
行列同士の四則演算
行列同士の演算では、対応する各要素同士の演算を行います。
以下のプログラムは、行列同士の足し算を行うプログラムです。
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print(a + b)
実行結果
[[ 6 8]
[10 12]]
足し算以外の四則演算も同様に行うことができます。
行列数が異なる配列の四則演算(ブロードキャスト)
行列数が異なる配列の四則演算は、通常は計算ができません。
しかしNumPy配列では、ブロードキャストという処理が行われるため、行列数が異なる配列の演算を行うことができます。
ブロードキャストとは、行列数が異なる配列同士の演算で、足りない行や列の値を補うことです。
具体的には、2×2の行列に1×2の配列を足した場合、1×2の配列の2行目に1行目と同じ値が補われて演算が行われます。
以下のプログラムは、2×2の行列と1×2の配列の足し算を行うプログラムです。
a = np.array([[1, 2], [3, 4]])
b = np.array([5, 6])
print(a + b)
実行結果
[[ 6 8]
[ 8 10]]
行列の内積、外積
NumPy配列を用いると、行列の内積、外積の計算がとても簡単に行えます。
内積
内積の計算を行うには、「dot()」を使用します。
以下のプログラムは、内積の計算を行うプログラムです。
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.dot(a, b)
print(c)
実行結果
[[19 22]
[43 50]]
外積
外積の計算を行うには、「cross()」を使用します。
以下のプログラムは、外積の計算を行うプログラムです。
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.cross(a, b)
print(c)
実行結果
[-3 6 -3]
まとめ
今回の記事では、NumPy配列の様々な演算方法について以下の内容を紹介しました。
- NumPy配列の様々な演算方法
→全ての要素に対して演算を行う - 合計・最大値・最小値・平均値の演算方法
→「sum()」「max()」「min()」「mean()」 - 行列の演算方法
→ブロードキャストが起こる - 内積・外積の演算方法
→「dot()」「cross()」
NumPy配列では、多次元配列の演算や、行列式の演算にとても便利な方法が多く実装されています。
そのため、どの様な演算ができるかをしっかりと覚えておきましょう。
まとめ記事に戻る