取代 NumPy 陣列中超過閾值的元素
在影像處理和資料操作領域,經常需要修改特定元素在多維數組內。一種這樣的操作涉及用新值取代所有超過預定義閾值的值。以下問題解決了此要求:
「我有一個2D NumPy 數組。如何將其中大於閾值T = 255 的所有值替換為值x = 255?」
解決此問題的一個簡單方法是迭代數組元素,將每個元素與閾值進行比較,並更新超出閾值的元素。雖然此方法有效,但由於巢狀循環,對於大型陣列來說可能會很慢。
NumPy 的 Fancy 索引提供了更有效的方法。此方法提供了一種基於布林條件修改元素的簡潔方法。透過利用 Fancy 索引,我們可以用 255 取代大於 255 的元素,如下所示:
<code class="python">arr[arr > 255] = x</code>
此運算在陣列元素和 255 之間執行逐元素比較。然後使用產生的布林數組來選擇和更新數組中對應的元素。賦值運算子將所選元素替換為指定值。
基準顯示 Fancy 索引相對於傳統 for 迴圈方法的優越性。在隨機 500x500 矩陣上,使用 Fancy 索引將大於 0.5 的值替換為 5 每個循環大約需要 7.59 毫秒。這種快速的性能使其成為此類操作的首選。
以上是如何有效率地取代 NumPy 數組中超過閾值的元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!