Python快速替换数组中的特定值

时间:2016-04-12 08:26:25

标签: python arrays numpy filter substitution

说我有两个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)

的内容

2 个答案:

答案 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