問題:
2 次元 NumPy 配列では、しきい値 (例: T = 255) より大きい値を特定の値 (例: x = 255) に置き換えたい。従来のアプローチには、時間のかかる for ループが含まれます。
解決策:
NumPy は、明示的なループの必要性を排除する簡潔で効率的なソリューションを提供します。 Fancy インデックスを活用すると、置換操作を簡単に実行できます。
<code class="python">arr[arr > 255] = x</code>
この 1 行のコードは、条件 (> 255) を満たす配列内のすべての要素を指定された値 (x) に置き換えます。
パフォーマンス:
Fancy インデックス作成アプローチは、タイミング測定で実証されているように、for ループ手法よりも大幅に高速です。 500 x 500 のランダム行列の場合、Fancy インデックスを使用すると、0.5 より大きい値を 5 に置き換えるのに平均 7.59 ミリ秒かかります:
<code class="python">import numpy as np A = np.random.rand(500, 500) %timeit A[A > 0.5] = 5</code>
利点:
以上がNumPy 配列内の高値要素を効率的に置き換える方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。