我有 2 个 numpy 数组,我希望每当元素 B 为 1 时,A 中的元素等于 0。两个数组始终处于同一维度:
A = [1, 2, 3, 4, 5]
B = [0, 0, 0, 1, 0]
我尝试进行 numpy 切片,但仍然无法正常工作。
B[A==1]=0
如何在不执行常规循环的情况下在 numpy 中实现此目的?
请您参考如下方法:
首先,您需要它们是 numpy 数组而不是列表。然后,您只需反转 B 和 A。
import numpy as np
A = np.array([1, 2, 3, 4, 5])
B = np.array([0, 0, 0, 1, 0])
A[B==1]=0 ## array([1, 2, 3, 0, 5])
如果你改用列表,这就是你得到的
A = [1, 2, 3, 4, 5]
B = [0, 0, 0, 1, 0]
A[B==1]=0 ## [0, 2, 3, 4, 5]
那是因为 B == 1 是 False 或 0(而不是数组)。所以你基本上写 A[0] = 0
