Numpy配列の各要素の演算
NumPy 配列、たとえば 1, 2, ..., 9、のそれぞれの要素の積、1x1, 1x2, 1x3, ..., 9x8, 9x9、をどうやって求めるか?もちろんループでもできるが、もっと簡単な方法があった。
まずは、NumPy をインポートし、配列を作る。
import numpy as np a = np.arange(1, 10) print(a) # ----- [1 2 3 4 5 6 7 8 9]
もとの配列の後ろに次元を 1 つ追加する。
a_9x1 = a[ : , np.newaxis ] print(a_9x1) # ----- [[1] [2] [3] [4] [5] [6] [7] [8] [9]]
もとの配列の前に新しい次元を追加したものも作る。
a_1x9 = a[ np.newaxis, : ] print(a_1x9) # ----- [[1 2 3 4 5 6 7 8 9]]
前と後ろに次元を追加した配列を掛けると、それぞれの要素を掛けた結果になる。
a_9x9 = a_9x1 * a_1x9 print(a_9x9) # ----- [[ 1 2 3 4 5 6 7 8 9] [ 2 4 6 8 10 12 14 16 18] [ 3 6 9 12 15 18 21 24 27] [ 4 8 12 16 20 24 28 32 36] [ 5 10 15 20 25 30 35 40 45] [ 6 12 18 24 30 36 42 48 54] [ 7 14 21 28 35 42 49 56 63] [ 8 16 24 32 40 48 56 64 72] [ 9 18 27 36 45 54 63 72 81]]
[1] * [1 2 3 4 5 6 7 8 9]
[2] * [1 2 3 4 5 6 7 8 9]
. . . . .
[9] * [1 2 3 4 5 6 7 8 9]
を NumPy が計算してくれる。