Python中numpy数组按阈值条件替换元素的实现方法
需求说明
需为numpy数组设置如下替换规则:
- 数组内小于等于
0.010545的元素,统一替换为0.010545 - 大于
0.010545的元素保留原始值
现有初始代码运行生成的数组部分元素低于阈值,不符合预期,需调整代码得到目标结果。
实现方法
直接使用numpy内置的逐元素最大值函数np.maximum()做下限截断即可,无需编写循环判断,代码简洁且运行效率高。
修正后的完整代码:
import numpy as np sigma0 = 0.02109 a = 0.001 b = 0.001 t = np.linspace(0, 20, 10) sigma1 = sigma0 - b * t # 对数组做下限截断,保证所有元素不低于0.010545 sigma1 = np.maximum(sigma1, 0.010545) print("sigma1 =", [sigma1])
逻辑说明
np.maximum(sigma1, 0.010545)会逐位置对比数组元素和阈值0.010545,返回两者中更大的值:- 原元素大于阈值时,保留原元素值
- 原元素小于等于阈值时,返回阈值
0.010545
- 也可以用
np.where()实现完全相同的效果,写法为sigma1 = np.where(sigma1 <= 0.010545, 0.010545, sigma1),判断逻辑更直观但代码稍长。
运行上述代码后,输出结果和预期完全匹配:
sigma1 = [array([0.02109 , 0.01886778, 0.01664556, 0.01442333, 0.01220111, 0.010545 , 0.010545 , 0.010545 , 0.010545 , 0.010545 ])]
内容的提问来源于stack exchange,提问作者Wiz123
相关产品推荐
相关产品推荐

