Python 在NumPy数组中执行除某些值以外的操作
有没有一种简单的方法可以锁定/冻结Numpy数组中的元素。我想在python中对Numpy数组执行几个操作,同时保持一些特定值的原始状态 比如说, 如果a具有Numpy数组aPython 在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语句或类似
[[ 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:)将其添加到答案中