NumPy配列の特定の値より大きいすべての要素を置き換えます 質問する

NumPy配列の特定の値より大きいすべての要素を置き換えます 質問する

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置き換えることができます。>255x

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

おすすめ記事