在数组中添加符合Python标准的元素

在数组中添加符合Python标准的元素,python,arrays,addition,Python,Arrays,Addition,我试图将两个矩阵相加,但是,我只想将其添加到数组中符合预定条件的某些元素中。例如,假设我有一个2D(2x2)RGB阵列,包含: [[[ 0. 0. 0.5 ] [ 0.89500316 1. 0.07273877]] [[ 0. 0. 0.5 ] [ 0. 0. 0.5 ]]] 我想施加一个条件,将[0,0,1]添加到小于

我试图将两个矩阵相加,但是,我只想将其添加到数组中符合预定条件的某些元素中。例如,假设我有一个2D(2x2)RGB阵列,包含:

[[[ 0.          0.          0.5       ]
 [ 0.89500316  1.          0.07273877]]

 [[ 0.          0.          0.5       ]
  [ 0.          0.          0.5       ]]]
我想施加一个条件,将
[0,0,1]
添加到
小于0.1
的与蓝色对应的元素中,因此输出为:

[[[ 0.          0.          0.5       ]
 [ 0.89500316  1.          1.07273877]]

 [[ 0.          0.          0.5       ]
  [ 0.          0.          0.5       ]]]
我该怎么办?我已经设置好了,但它显然将
1
添加到第三列中的所有元素中:

a = a + [0, 0, 1]
print a

如果您的RGB值只是在其中浮动,一种方法是使用布尔掩码选择数据:

>>> a[:, :, 2][a[:, :, 2] < 0.1] += 1.0
由于布尔运算在数组上按元素运行,因此可以“选择”与条件匹配的元素:

>>> foo[foo > 2]
array([3, 4])
此外,进行这样的选择会返回原始数组上的视图,因此这些元素可以在原始数组中进行变异:

>>> foo[foo % 2 == 0] += 1
>>> foo
array([[1, 3],
       [3, 5]])

你用numpy做这个吗?使用numpy,您编写的表达式可能会执行元素级加法。使用标准Python(而不是numpy),它只会在矩阵的末尾添加一个1D列表。是的,我正在使用NUMPyth。出于某种原因,第一个列表会将一个添加到该行的所有内容中,但第二个列表正是我要找的!哎呀,你说得对,我把我的面具用错阵列了;这一点现在得到纠正。谢谢你指出这一点!
>>> foo[foo > 2]
array([3, 4])
>>> foo[foo % 2 == 0] += 1
>>> foo
array([[1, 3],
       [3, 5]])