Python:快速订阅满足条件的2D数组中的元素

时间:2018-04-11 20:47:57

标签: python arrays numpy

我是Python新手,我的问题可能太明显了,但我找不到足够好的答案。

假设我有一个2D数组a=np.array([[1,2,3],[4,5,6],[7,8,9]])。如何订阅满足条件的元素?假设,我想将那些大于3的a元素增加一个。在Matlab中,我会在一行中完成: a(a>3)=a(a>3)+1. Python怎么样? 结果应为[[1,2,3],[5,6,7],[8,9,10]]

我知道有些函数可以返回我需要的空格,比如np.where。我也知道有indexing 2D array with two 1D arrays的方法。我无法将它们组合在一起。

当然,我可以用for循环来做。我感兴趣,是否有一种方便的Matlab方式呢?

谢谢

1 个答案:

答案 0 :(得分:4)

如果您已经知道布尔索引的工作原理,那么您只需要进行就地添加:

In [6]: a=np.array([[1,2,3],[4,5,6],[7,8,9]])

In [7]: a[a>3] += 1  # roughly equal to a = a[a>3] + 1

In [8]: a
Out[8]: 
array([[ 1,  2,  3],
       [ 5,  6,  7],
       [ 8,  9, 10]])