如何正确使用NumPy的where方法将数组中奇数替换为-1
NumPy 奇数替换为-1的代码错误修正
代码问题说明
你写的np.where(Q9 % 2 == 1) = - 1存在两个核心错误:
- 语法逻辑错误:
np.where()是带返回值的函数,不能直接对函数调用结果赋值,这类操作和给len([1,2]) = 3赋值一样,不符合Python语法规则。 - 参数缺失:你只传入了判断条件,没有传
np.where要求的「条件成立取值」「条件不成立取值」两个参数,单参数调用np.where只会返回符合条件的索引元组,根本不会执行替换逻辑。
正确实现方案
np.where的标准替换语法为np.where(判断条件, 条件为真时的填充值, 条件为假时的填充值),要保留原数组的偶数、仅把奇数替换为-1,把原数组作为第三个参数传入即可,完整代码如下:
import numpy as np # 待处理目标数组 Q9 = np.array([0, 1, 0, 3, 0, 5, 0, 7, 0, 9]) # 执行替换 res = np.where(Q9 % 2 == 1, -1, Q9)
运行后res的输出为:
array([ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1])
如果不需要保留原数组,也可以直接用布尔索引原地修改,写法更简洁:
Q9[Q9 % 2 == 1] = -1
内容的提问来源于stack exchange,提问作者Spencer Lobban
相关产品推荐
相关产品推荐

