说我有两个numpy数组
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = np.array([2,7,6])
我想获得
c = np.array([[1,0,3],[4,5,0][0,8,9]])
也就是说,我想用值0
替换数组a
中的所有元素,其值包含在序列b
中。
最快,最干净的方法吗?
(是否有类似substitute(a,b,0)
)
答案 0 :(得分:2)
替代回答:
c = a.copy()
c[np.in1d(a.ravel(), b).reshape(a.shape)] = 0
np.in1d
有点像“in”运算符的矢量化版本,但它只适用于1D数组。 (因此,拉威尔和重塑行动。)
答案 1 :(得分:1)
c = a.copy()
for num in b:
c[c == num] = 0