22

配列の要素をスカラーと比較し、比較した値の最大値を持つ配列を取得したいと考えています。それは私が呼び出したいです

import numpy as np
np.max([1,2,3,4], 3)

そして手に入れたい

array([3,3,3,4])

しかし、私は得る

ValueError: 'axis' entry is out of bounds

私が走るとき

np.max([[1,2,3,4], 3])

私は得る

[1, 2, 3, 4]

これは、私が求めている結果ではないリスト内の 2 つの要素の 1 つです。他の組み込み関数と同じくらい高速な Numpy ソリューションはありますか?

4

2 に答える 2

32

これはすでに関数で numpy に組み込まれていますnp.maximum:

a = np.arange(1,5)
n = 3

np.maximum(a, n)
#array([3, 3, 3, 4])

これは変化しませんa:

a
#array([1, 2, 3, 4])

@jamylakの回答のように元の配列を変更したい場合はa、出力として与えることができます:

np.maximum(a, n, a)
#array([3, 3, 3, 4])

a
#array([3, 3, 3, 4])

ドキュメント:

maximum(x1, x2[, out])

配列要素の要素ごとの最大値。
と同等ですがnp.where(x1 > x2, x1, x2)、より高速で、適切なブロードキャストを行います。

于 2013-05-16T14:41:29.080 に答える
3
>>> import numpy as np
>>> a = np.array([1,2,3,4])
>>> n = 3
>>> a[a<n] = n
>>> a
array([3, 3, 3, 4])
于 2013-05-16T12:28:46.687 に答える