Pythonで2つの行列の対応する要素の最大値の行列を作る

PythonのNumPyを使って、2つの行列の各要素を比較して、大きい方の要素を集めた行列を作ります。

目次

  1. numpy.maximumメソッドの使い方
  2. 大きい方の要素を集めた行列の作成例

numpy.maximumメソッドの使い方

要素毎に最大値の行列を計算します。

y = numpy.maximum(x1, x2, [out], [where], [casting], [order], [dtype], [subok])
変数 内容
x1,x2 array_like 比較する行列。
out ndarray, None, tuple 省略可。規定値はNone。
where array_like 省略可。規定値はTrue。
casting str 省略可。規定値は'same_kind'。
order str 省略可。規定値は'K'。
dtype dtype 省略可。規定値はNone。
subok bool 省略可。規定値はTrue。
y ndarray, scalar 各要素が最大値で構成される行列、または数値。

ちょっとイメージしにくいですね。使用例を見た方がわかりやすいと思います。

大きい方の要素を集めた行列の作成例

>>> import numpy as np
>>> a = np.array([-2,-1,0,1,2])
>>> a
array([-2, -1,  0,  1,  2])

>>> b = np.array([0,0,0,0,0])
>>> b
array([0, 0, 0, 0, 0])

>>> np.maximum(a,b)
array([0, 0, 0, 1, 2])

>>> np.maximum(a,0)  # 片方の引数をスカラーにしてみる
array([0, 0, 0, 1, 2])

同じ大きさの行列の各要素を比較して、大きい方の要素だけで構成された行列を返しています。

異なる大きさの行列を比較したらどうなるでしょうか。

>>> import numpy as np
>>> a = np.array([-2,-1,0,1,2])
>>> a
array([-2, -1,  0,  1,  2])

>>> c
array([[-1.5],
       [ 0. ],
       [ 1.5]])

>>> np.maximum(a,c)
array([[-1.5, -1. ,  0. ,  1. ,  2. ],
       [ 0. ,  0. ,  0. ,  1. ,  2. ],
       [ 1.5,  1.5,  1.5,  1.5,  2. ]])
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2

-1.5 -1.5 -1.5 -1.5 -1.5
0 0 0 0 0
1.5 1.5 1.5 1.5 1.5

という2つの行列の比較が行われるようです。

自動的に拡張してくれるのは楽ですね。

広告

Pythonの数値計算カテゴリの投稿