Python 中表示空数据使用 None,它是 NoneType 类型,如下所示:

In [59]: type(None)            Out[59]: NoneType

NoneType 类型没有对外公开属性和方法:

因此,None 比较容易理解,就是一种空类型。

但是使用过 NumPy 的肯定都会接触到 nan 这种类型,它的其他写法:NaN或 NAN,查看其类型却发现是 float 类型:

In [63]: type(np.nan)                    Out[63]: float

这不免让人心生疑惑,nan 不是空数据,而是浮点数,那么到底等于多少?

原来这并不是NumPy特有的数值,而是IEEE754规定的特殊浮点数之一。

特殊在哪里?

这就要知道计算机是如何表示浮点数的,IEEE754 标准中规定 float 单精度浮点数,在机器中表示用 1 位表示数字的符号,用 8 位表示指数,用 23 位表示尾数,即小数部分,如下图所示:

关于浮点数表示更加详细的解释可参考下面链接,在此不详细展开:

https://blog.csdn.net/k346k346/article/details/50487127

对于单浮点数,指数部分由8位组成,所以取值范围:0到255,而指数等于0,255 这两个值,IEEE754 标准有特别的规定:

1. 当指数等于0,并且小数点后所有位全为 0,则这个数为 0

2. 当指数等于255,并且小数点后所有位全为 0,则这个数为无穷,当符号位为0时正无穷 float('inf'),当符号位为1时负无穷 float('-inf')

3. 当指数等于255,并且小数点后至少一位不为 0,规定此浮点数为 nan,表达的含义:not a number ,不是一个数

以上就是 NumPy 中 nan 的解释,弄清楚本质后,再来看几个关于它的运算。

既然 nan 不是一个数,所以拿它与任何浮点数比较,返回结果都是 False:

In [64]: np.nan 0                    Out[64]: False

In [65]: np.nan == np.nan                     Out[65]: False

In [66]: np.nan Out[66]: False

找出 np.nan 出现的索引位置,可以使用 isnan 方法:

In [67]: a = np.array([-9,np.nan,10,np.nan])# 找出np.nan出现的索引In [68]: a.where(np.isnan(a)) # 返回结果# (array([1, 3]),)

往期精彩回顾

适合初学者入门人工智能的路线及资料下载

机器学习及深度学习笔记等资料打印

机器学习在线手册

深度学习笔记专辑

《统计学习方法》的代码复现专辑

AI基础下载

机器学习的数学基础专辑

获取本站知识星球优惠券,复制链接直接打开:

https://t.zsxq.com/qFiUFMV

本站qq群704220115。

加入微信群请扫码:

数据返回nan_NumPy 的 nan 如何理解?相关推荐

  1. easyui树拖拽排序java_easyui tree 拖拽功能并将数据返回后台保存至数据库

    1.需要实现tree的拖拽功能,首先在定义一个tree时候需要设置 dnd : true 2.easyui 给我们提供了一个onDrop : function(target, source, poin ...

  2. np.corrcoef返回值含有nan

    返回值含有nan 数据输入中某些变量是常数 输入数据中本身含有nan型数据 返回值含有空值 输入数据中有object 对象类型数据,转换成浮点型.

  3. pandas生成新的累积连乘数据列(cumprod)、pandas生成新的累积连乘cumprod数据列(数据列中包含NaN的情况)、pandas计算整个dataframe的所有数据列的累积连乘

    pandas生成新的累积连乘数据列(cumprod).pandas生成新的累积连乘cumprod数据列(数据列中包含NaN的情况).pandas计算整个dataframe的所有数据列的累积连乘cump ...

  4. pandas生成新的累加数据列、pandas生成新的累加数据列(数据列中包含NaN的情况)、pandas计算整个dataframe的所有数据列的累加

    pandas生成新的累加数据列.pandas生成新的累加数据列(数据列中包含NaN的情况).pandas计算整个dataframe的所有数据列的累加 目录

  5. php 插入 mysql_php插入mysql数据返回id的方法

    如下所示: $dbh = mysql_connect('localhost','root','root'); mysql_select_db('pkbk'); $query = "inser ...

  6. SpringMVC响应的方式,无数据跳转页面,带数据跳转页面.Json数据返回

    SpringMVC响应的方式,无数据跳转页面,带数据跳转页面.Json数据返回 页面跳转设定 //转发会把后端携带的request和Response发送到前端jsp,在jsp中可以直接使用其中的数据/ ...

  7. 解决后台json数据返回的字段需要替换的问题

    有时候后台json数据返回的字段含有"id",也有可能是有时候为了减少代码的冗余,两页面之间只是数据模型个别属性的区别,所以这时候最好是用到模型属性的替换,用新的属性替换返回的js ...

  8. java 不存在数据返回的值是什么_Java方法

    方法的概念 方法就是将功能重复的代码封装成一段独立的小程序,通过调用方法的方式以提高代码的复用性(减少代码重复) 复制代码 int year = 2020; if ( year % 4 == 0 &a ...

  9. oracle 导入数据时主键丢失,Oracle 插入数据 返回主键

    场景:解决getJdbcTemplate往oracle数据库中插入数据返回主键出错有关问题 解决getJdbcTemplate往oracle数据库中插入数据返回主键出错问题 我们使用Spring中的J ...

最新文章

  1. python对象一定要删除引用吗_在Python中删除一个对象和所有对它的引用?
  2. [CF816B] Karen and Coffee(前缀和,思维)
  3. linux中如何撤销上次命令,使用git reset命令撤销上次Git提交
  4. Java初学者推荐的几本书
  5. 带你全面了解比特黄金(bitcoin gold)分叉
  6. idea:打包jar(原文by曲高终和寡)
  7. mysql可能锁的表命令_mysql 默许是表级锁一些不太常用命令
  8. matlab编程数字信号,MATLAB--数字信号实验.doc
  9. git提取和拉取区别_每天一Git之起步 - 关于版本控制
  10. HTML5_05之SVG扩展、地理定位、拖放
  11. requests session
  12. HoloLens的显示分辨率有多少?
  13. keepalived+LVS 详解(2) -- keepalived.conf解析
  14. python treeview控件使用详解_python绘图工具turtle库的使用详解
  15. 将vue,H5项目打包成app,apk安装包
  16. Codeblocks 17汉化
  17. 深度学习图像分类数据集制作
  18. 简单大学生静态HTML网页作品 HTML5+CSS大作业——圣诞节节日(7页) 带轮播特效
  19. 计算机应用专业的简历自我介绍,计算机应用个人简历模板
  20. 研究领域、研究课题、研究方向三者的区别

热门文章

  1. osgi框架和spring区别_最新100道大厂高频spring面试题附答案
  2. linux fastQC 操作命令,linux-ubuntu下fastQC的安裝及使用
  3. 处女座与cf(思维题)
  4. 重磅 | 20+技术大咖齐聚 阿里云数据库创新上云峰会进入一周倒计时
  5. 在本地机房享受专属公共云服务,详解阿里云本地化部署服务云盒
  6. bilibili基于 Flink 的机器学习工作流平台在 b 站的应用
  7. 为什么下一个十年的主战场在Serverless | 云原生Talk
  8. android魅族进度条,魅族基于安卓 10 的首个 Flyme 内测版已推送:16s Pro/16s 尝鲜,可强制开启 90Hz 刷新率...
  9. 半径为r的均匀带电球体_半径为R的均匀带电球面,总带电量为Q,设无穷远处的电势为零,则距离球心为r(r=R)的P点处的电场强度的大小和电势为...
  10. 基于RadeonRays的光线追踪全局光照实现方案