簡體   English   中英

numpy ndarray 上的 Python 元素條件

[英]Python element-wise condition on numpy ndarray

我有兩個相同形狀的 numpy ndarrays。

A = [[12, 25, 6],
    [28, 52, 74]]
B = [[100, 2, 4],
    [2, 12, 14]]

我的目標是用 A 中的 0 替換 B 中的值 <= 5 的每個元素。所以我的結果應該是:

# So C[0][0] = 12 because A[0][0] = 12 and B[0][0] >= 5
C = [[12, 0, 0],
    [0, 52, 74]]

有沒有一種有效的方法來做到這一點? 對於上下文,這是嘗試對圖像進行一些背景減法,並將所有背景替換為黑色。

干得好:

A = np.array([[12, 25, 6],[28, 52, 74]])
B = np.array([[100, 2, 4],[2, 12, 14]])

A = np.where(B <= 5, 0, A)

輸出:

array([[12,  0,  0],
       [ 0, 52, 74]])

如果你想要一個新數組,我會這樣做:

C = A.copy()
C[B <= 5] = 0

無論如何,它比我機器上的np.where()快一點。

如果您不介意覆蓋A ,只需執行A[B <= 5] = 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM