[英]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.