我需要根据元素出现在其他replacement
数组中的条件替换Numpy 2D数组中的元素
例如:
>>> main = np.random.randint(5, size=(3, 4))
>>> main
array([[1, 2, 4, 2],
[3, 2, 3, 2],
[4, 4, 2, 3]])
>>> repl = [2,3]
>>> main[main in repl] = -1
我想将
repl
中的所有值都更改为-1,所以我希望main是:[[1, -1, 4, -1],
[-1, -1, -1, -1],
[4, 4, -1, -1]]
但是,尝试将
ValueError
置于替换条件下时会引发in
ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all()
最佳答案
我们可以使用np.in1d
创建所有此类出现的展平遮罩,并在展平输入中将其设置为-1
,如下所示-
main.ravel()[np.in1d(main, repl)] = -1
另外,我们可以使用
np.putmask
,从而避免使用np.ravel()
避免显式展平,如下所示:np.putmask(main, np.in1d(main, repl), -1)
关于python - 根据另一个数组中的出现替换二维数组中的元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40828902/