当前位置: 首页 > 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.cnnetsun.cn/news/3237985.html

相关文章:

  • 3 种传感器退化场景解析:Ground-Fusion 如何应对视觉/轮速计/GNSS失效
  • 从访存的角度理解RTOS的实时性
  • 点餐小程序平台哪个好?菜单、支付和后厨订单能力对比
  • Logistic 模型与回归辨析:从S型曲线到分类任务的5个关键差异
  • Google OSV-Scanner:一个命令扫清项目依赖里的漏洞
  • 计算机毕业设计之旅行社网站的设计与实现
  • 2026年外贸获客新思路:SEO保底,GEO抢跑,双管齐下
  • 小说大纲生成AI写作辅助工具使用参考
  • 私有化视频会议平台/智能会议管理系统EasyDSS助力企业实现数字化培训全链路转型
  • Maven POM 标签说明
  • 从单兵到团队:用AI智能体协作框架构建高效自动化工作流
  • 3步免费获取国家中小学智慧教育平台电子课本PDF:教师必备的终极下载指南
  • SketchUp STL插件:3D打印工作流的终极解决方案
  • 空号检测能力综合评估:2026主流方案数据源覆盖度、识别准确率与实时响应速度梯队解读
  • 终极指南:快速解决ComfyUI-Impact-Pack FaceDetailer节点种子缺失问题
  • 怎样高效实现微信群消息智能转发:自动化同步完整指南
  • 【Qt初识】信号槽(二):自定义信号函数与槽函数
  • 微信群消息自动转发完整指南:3步实现跨群信息同步
  • 校招季消息发不完,如何告别重复邀约内耗
  • 多个 AI 怎么「开会不抢话」?AutoGen Group Chat 一文讲透
  • MambaDFuse 多模态图像融合实战:RTX 4090 双卡训练,8大指标超越SOTA
  • Python scikit-learn KMeans 与 ArcPy 结合:GIS面数据4属性聚类与3步自动化制图
  • 计算机毕业设计之旅游资源及线路管理系统
  • 2026零基础考试季课堂记录入门教程避坑详解包教包会可直接上手
  • 【IEEE出版、往届2.5个月检索、中山大学主办】第六届计算机科学与区块链国际学术会议(CCSB 2026)
  • 网站发布内容预检和网站巡查预警对运营管理有哪些要求?
  • 【油藏地球物理正演软件ColchisFM】地震剖面图片数值化地震数据——科吉思技术实战分享
  • 终极RPG Maker解密教程:5分钟学会提取加密游戏资源
  • 如何在Windows电脑上安装APK文件:APK安装器完整使用指南
  • 谷歌 Made By Google 发布会官宣!Pixel 11 彻底终结 128GB:为何 AI 时代“256GB 起步”成了硬红线?