2D NumPy 配列があります。しきい値より大きいすべての値をT = 255
値に置き換えるにはどうすればよいでしょうx = 255
か。遅い for ループ ベースの方法は次のとおりです。
# arr = arr.copy() # Optionally, do not modify original arr.
for i in range(arr.shape[0]):
for j in range(arr.shape[1]):
if arr[i, j] > 255:
arr[i, j] = x
ベストアンサー1
これを行う最も速くて簡潔な方法は、NumPy に組み込まれている Fancy インデックスを使用することだと思います。名前付きの がある場合はndarray
、次のようにすべての要素を値にarr
置き換えることができます。>255
x
arr[arr > 255] = x
私は自分のマシンで 500 x 500 のランダム マトリックスを使用してこれを実行し、0.5 より大きい値をすべて 5 に置き換えましたが、平均 7.59 ミリ秒かかりました。
In [1]: import numpy as np
In [2]: A = np.random.rand(500, 500)
In [3]: timeit A[A > 0.5] = 5
100 loops, best of 3: 7.59 ms per loop