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つの行列の比較が行われるようです。

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

公開日

広告