2021年9月12日日曜日

【Numpy】ndarrayと数値の演算・ndarray同士の演算

 Pythonの数値計算モジュールNumPyの配列型データ構造であるndarrayと数値の演算、ndarrayndarrayの演算について説明する。

Numpyを使う際にはimportが必要。しばしばnpと略される。

import numpy as np



1. ndarrayと数値の計算

 要素が数値であるndarrayと数値を演算した場合、ndarrayの全要素に対して同じ演算が適用される。
数字の加算の例。各要素に2が足される。

import numpy as np

y = np.array([[10, 11, 12],[13, 14, 15]])
print(y + 2)

実行結果

[[12 13 14]
 [15 16 17]]


 べき乗の例。各要素が二乗される。

import numpy as np

y = np.array([[10, 11, 12],[13, 14, 15]])
print(y ** 2)

実行結果

[[100 121 144]
 [169 196 225]]


 要素が文字のndarrayは演算できない

import numpy as np

y = np.array([['10', '11', '12'],['13', '14', '15']])
print(y * 2)

実行結果

UFuncTypeError: ufunc 'multiply' did not contain a loop with signature matching typesnumpy.core._exceptions._UFuncNoLoopError: ufunc 'multiply' did not contain a loop with signature matching types


2. ndarray同士の計算

 同じ形状のndarray同士の演算では同じ位置の要素同士が演算される

import numpy as np

x = np.array([[1, 1, 1], [2, 2, 2]])
y = np.array([[10, 11, 12], [13, 14, 15]])
print(x * y)

実行結果

[[10 11 12]
 [26 28 30]]


 1行n列のndarrayとm行1列のndarrayの演算では、それぞれのndarrayがm行n列のndarrayに展開され要素同士が演算される。結果はm行n列のndarrayとなる。
1行4列のndarrayと3行1列のndarrayの演算。それぞれのndarrayが3行4列に展開され要素同士が演算される。

import numpy as np

x = np.array([1, 2, 3, 4])
y = np.array([[10], [11], [12]])
print(x * y)

実行結果

[[10 20 30 40]
 [11 22 33 44]
 [12 24 36 48]]


 m行n列のndarrayとm行1列のndarrayの演算では、後者がm行n列に展開され要素同士が演算される。結果はm行n列のndarrayとなる。
2行3列のndarrayと2行1列のndarrayの演算。後者が2行3列に展開され要素同士が演算される。

import numpy as np

x = np.array([[1, 1, 1], [2, 2, 2]])
y = np.array([[10],[11]])
print(x / y)

実行結果

[[0.1        0.1        0.1       ]
 [0.18181818 0.18181818 0.18181818]]


 m行n列のndarrayと1行n列のndarrayの演算では、後者がm行n列に展開され要素同士が演算される。結果はm行n列のndarrayとなる。
2行3列のndarrayと1行3列のndarrayの演算。後者が2行3列に展開され要素同士が演算される。

import numpy as np

x = np.array([[1, 1, 1], [2, 2, 2]])
y = np.array([10, 11, 12])
print(x / y)

実行結果

[[0.1        0.09090909 0.08333333]
 [0.2        0.18181818 0.16666667]]


3. リファレンス

NumPy > Basic Operations

使用バージョン:Python 3.8.8/numpy 1.20.1

0 件のコメント:

コメントを投稿