Python二维数组满足条件元素的快速索引与修改方法咨询
在Python中对NumPy数组的指定元素执行加1操作
嘿,作为Python新手不用着急,NumPy和MATLAB一样支持简洁的向量化操作,完全可以用一行代码实现你要的功能,甚至写法和MATLAB非常相似!
方法一:布尔索引(和MATLAB逻辑索引用法几乎一致)
这是最贴近你MATLAB写法的方式,直接利用布尔数组来筛选元素并修改:
import numpy as np a = np.array([[1,2,3],[4,5,6],[7,8,9]]) a[a > 3] += 1 # 或者写成 a[a > 3] = a[a > 3] + 1,两种写法都可行 print(a)
运行后就会得到你预期的结果:[[1 2 3] [5 6 7] [8 9 10]]
原理很简单:a > 3会生成一个和原数组形状相同的布尔数组,其中大于3的位置为True,其余为False;用这个布尔数组去索引原数组,就能精准选中所有需要修改的元素,然后直接执行加1操作即可。
方法二:使用np.where实现条件替换
如果你需要更清晰地表达“满足条件则修改,不满足则保留”的逻辑,还可以用np.where函数:
import numpy as np a = np.array([[1,2,3],[4,5,6],[7,8,9]]) a = np.where(a > 3, a + 1, a) print(a)
这个函数的参数顺序是:条件表达式,满足条件时的取值,不满足条件时的取值,同样能得到你想要的结果。
内容的提问来源于stack exchange,提问作者Mikhail Genkin
相关产品推荐
相关产品推荐

