当前位置: 首页 > news >正文

np.where(arr<0,0,arr)数据替换

np.where(条件, 满足条件时填的值, 不满足条件时填的值)

demo:把数组中小于0的数都替换为0

import numpy as np arr = np.array([-2.5, 3.0, -0.5, 0, 5.5, -1.2, 4.0]) result = np.where(arr < 0, 0, arr) print("处理结果:", result)
处理结果: [0. 3. 0. 0. 5.5 0. 4. ]

注意:这俩方法与where差不多

np.clip(arr, 0, None)也是单边限制(下限为0),效果完全一样
np.clip(arr, -5, 5)双边限制:小于 -5 的变 -5,大于 5 的变 5,中间的保留。

where的其他用法:

1、找出数组满足条件的索引:
arr = np.array([10, 25, 30, 15, 28]) # 找出 arr 中大于 20 的数字都在哪个位置 indexes = np.where(arr > 20) print(indexes) # 输出:(array([1, 2, 4]),) -> 意思是下标 1、2、4 的位置满足条件 # 利用这个索引,可以把这些位置的数全部打印出来 print(arr[indexes]) # 输出:[25 30 28]

在实际数据清洗中的妙用:如果你想删除所有异常值(而不是替换),你就用单参数where找到好数据的下标,然后筛选出来。

# 假设温度数据,只想要大于0且小于100的正常数据,把异常的丢掉 raw = np.array([36.5, -5, 45.0, 200, 36.6]) normal_indexes = np.where((raw > 0) & (raw < 100)) clean_data = raw[normal_indexes] print(clean_data) # 输出:[36.5 45.0 36.6] (-5 和 200 被丢掉了)
2、复合逻辑(且 &,或 |,非 ~)
arr = np.array([-5, 0, 10, 25, 100]) # 条件:大于等于 0 并且 小于等于 50 result = np.where((arr >= 0) & (arr <= 50), arr, -999) # 不满足的设为 -999 print(result) # 输出:[-999 0 10 25 -999]

注意:在 NumPy 中,逻辑“与”必须用&,逻辑“或”用|,千万不能用 Python 的andor

3、嵌套多条件(实现if...elif...else

where支持嵌套,用来处理“不止两种情况”的分支。

比如:大于 0 的设为 1,等于 0 的设为 0,小于 0 的设为 -1。

arr = np.array([-2, 0, 3]) # 外层判断 >=0 吗?如果是,再进入内层判断是不是等于 0 result = np.where(arr >= 0, np.where(arr == 0, 0, 1), -1) print(result) # 输出:[-1 0 1]

如果条件超过 3 个分支,用np.select代码会更清晰

4、结合np.where修改原始数据
where 可以直接放在赋值语句的等号左边(借助单参数模式拿到的索引) arr = np.array([1, 2, 3, 4, 5]) # 找出所有大于3的位置,直接将这些位置上的值改为 100 arr[np.where(arr > 3)] = 100 print(arr) # 输出:[1 2 3 100 100]

三个参数造新值,两个参数找位置。

1、看到3 个参数(条件,A,B):它就是“盖浇饭”,满足条件的浇A,不满足的浇B,生成新饭。

2、看到1 个参数(只有条件):它就是“定位器”,只告诉你哪里有金矿(下标),挖不挖随你。

http://www.jsqmd.com/news/1152990/

相关文章:

  • 光学仿真的终极指南:5分钟上手专业级2D光学模拟工具
  • ShipAny TanStack 的 Agent Skills:把 Claude Code 变成真正懂项目的开发助手
  • VCAP Design 考试多少钱?2026 最新官方定价、费用明细与考证成本全解析
  • Google PAT论文助手:AI智能体框架在学术评审中的推理缩放与自动化验证
  • 园世深耕运动声学底层技术,以标准制定者之姿领跑专业运动耳机赛道
  • SPSS与Python对比:3种方法实现FIFA球员数据因子分析与聚类建模
  • FIFA球员数据分析实战:因子分析提取10大能力维度与K-Means聚类分群
  • 如何在5分钟内搭建你的专属中医AI助手:仲景中医大语言模型完整指南
  • Google Authenticator集成实战:解决时间偏移、密钥存储与二维码过期三大难题
  • 一致性保障:用哈希校验和对账作业监测数据漂移
  • 瑞芯微RK3588与RK3588S选型对比:从17mm²到23mm²封装的5大设计权衡
  • 2026年外贸获客新思路:SEO保底,GEO抢跑,双管齐下
  • 多门店餐饮小程序怎么搭建?门店、员工和订单管理指南
  • Java 大厂面试高频坑:double 为什么不能精确保存 0.1?
  • 数据要素数据资产解决方案(PPT)
  • 安利一个JSON Path可视化查找神器
  • 搭建个智能体,这不是有手就会??
  • python+requests+excel 接口测试详解
  • Cap:开源版的 Loom,录屏分享这件事它包了
  • 从单兵到团队:用AI智能体协作框架构建高效自动化工作流
  • 深入JVM调优实战:从内存模型到GC优化,让你的Java应用性能飙升
  • 中山灯具厂出海布局遇阻,一份出海战略规划如何扭转困局
  • Mermaid:用 Markdown 写图表,文档告别画图死
  • 鸿蒙新特性:Radio 单项选择组件——构建健康评估问卷
  • kconfigDetector错误类型详解:从type error到unmet dependence的完整解析
  • 冒泡排序:从经典到大数据,一文掌握多种解法与演进
  • 高光谱拼接算法(一)扫推式成像和航带拼接算法
  • okbiye 一站式毕业论文 AI 写作板块,解决毕业生全流程论文撰写难题
  • 计算机毕业设计之旅行社网站的设计与实现
  • 2026年写小说软件排行榜:实测7款ai写小说工具,小说软件生成器哪家强?