Python 在NumPy数组中执行除某些值以外的操作

Python 在NumPy数组中执行除某些值以外的操作,python,arrays,numpy,Python,Arrays,Numpy,有没有一种简单的方法可以锁定/冻结Numpy数组中的元素。我想在python中对Numpy数组执行几个操作,同时保持一些特定值的原始状态 比如说, 如果a具有Numpy数组a [[ 1 3 4 5], [6 7 8 0], [9 10 11 2]] 和另一个Numpy阵列b [[2 0 4 10], [11 5 12 3], [6 8 7 9]] c=a+b,但保持a中的原始值3、8和2 我的数组非常大,我想要一个不必使用for循环、if语句或类似

有没有一种简单的方法可以锁定/冻结Numpy数组中的元素。我想在python中对Numpy数组执行几个操作,同时保持一些特定值的原始状态

比如说,

如果a具有Numpy数组a

[[ 1  3  4  5],
  [6  7  8  0],
  [9 10  11 2]]
和另一个Numpy阵列b

[[2  0  4  10],
 [11 5  12  3],
 [6  8  7   9]]
c=a+b,但保持a中的原始值3、8和2

我的数组非常大,我想要一个不必使用for循环、if语句或类似语句的解决方案

您可以使用构建遮罩,然后根据结果从
a
a+b
填充:

m = np.isin(a, [3,8,2])
c = np.where(m, a, a+b)
或者正如@hpaulj所建议的,您也可以使用
where
out
in,这将在适当的位置修改
a

np.add(a, b, where=~np.isin(a,[3,8,2]), out=a)

array([[ 3,  3,  8, 15],
       [17, 12,  8,  3],
       [15, 18, 18,  2]])

您也可以使用
np的
where
(和
out
)添加
。右好建议@hpaulj:)将其添加到答案中