我是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方式呢?
谢谢
答案 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]])