java难学还是pythonnanxue_关于python:为什么numpy中的“ NaN”比“ -np.inf”更小?

在涉及np.min或np.argmin的任何比较中,认为NaN小于-np.inf的原因是什么?

import numpy as np

In [73]: m = np.array([np.nan, 1., 0., -np.inf])

In [74]: n = np.array([-np.inf, 1., 0., np.nan])

# Huh??

In [75]: np.min(m)

Out[75]: nan

In [76]: np.min(n)

Out[76]: nan

# Same for np.argmin

In [77]: np.argmin(m)

Out[77]: 0

In [78]: np.argmin(n)

Out[78]: 3

# Its all false!

In [79]: np.nan < -np.inf

Out[79]: False

In [80]: np.nan > -np.inf

Out[80]: False

# OK, that seems to fix it, but its not necessarily elegant

In [81]: np.nanmin(m)

Out[81]: -inf

In [82]: np.nanargmin(m)

Out[82]: 3

我想这可能与将NaN值返回False的任何比较产生副作用,但是当您"偶然"有时在数组中最终以NaN值结尾时,这种恕我直言会带来一些相当烦人的效果。 np.nanmin或np.nanargmin的使用感觉就像是一种快速修复程序,该修复程序以某种方式装订在现有行为之上。

除了文档中的注释外:"传播NaN值,也就是说,如果至少一项是NaN,则相应的最小值也将是NaN。要忽略NaN值(MATLAB行为),请使用nanmin。 没有找到任何能解释该行为背后原因的信息。这是通缉还是NaN值的特定内部表示的副作用?为什么?

您可能会发现此答案很有帮助:stackoverflow.com/questions/1565164/

这是一种逻辑行为:如果某物不是数字,则无法将其与是数字的任何东西进行比较,因此,任何比较均返回false。 不仅如此-人们可以说在大多数情况下,NaN不是某些操作的理想结果,因此它应该像其他任何异常一样传播。

请参阅最近的答案stackoverflow.com/a/41324751/901925。 在此功能和相关功能中,NaN被显式编码为maximal。

您的前提不正确。 np.nan对于任何其他数字(包括它自己)都是无序的,不会引发错误。 虽然小于,但它也大于且不等于任何其他数字-包括其自身。 这是IEEE 754的一部分。实现细节是如果用信号处理NaN或安静地处理NaN。 脾气暴躁的对待安静。

正如@Dunno在评论中提到的,将NaN与数字进行比较并没有太多意义,因此这种行为可能是可以的。 IEEE 754标准说明了将NaN与数字进行比较的方法:

Four mutually exclusive relations are possible: less than, equal, greater than, and unordered. The last case

arises when at least one operand is NaN. Every NaN shall compare unordered with everything, including

itself

根据标准,这是:

# Its all false!

In [79]: np.nan < -np.inf

Out[79]: False

将导致"无序"结果,因此它属于"小于"关系是不正确的。

该解释的问题在于,Python中没有"无序"类别,因此np.nan < 5,np.nan > 5和np.nan == 5不能全部求和为False,但是它们确实是。 如果您开始在常规Python语句中使用np.nan,则将引起各种麻烦。 例如:min([5, np.nan])-> 5,而min([np.nan, 5])-> np.nan。 我想知道为什么np.nan支持比较并且不会像None那样引发TypeError。

因此,您可能已经知道:

" inf"是无穷大-一个大于任何其他值的值。因此,"-inf"小于任何其他值。请记住,该值是一个数字。

" nan"表示不是数字。

因此,如果根据您在上面声明的数组" m,n"以及一旦对其中任何一个执行" np.min()",实际上发生的就是在遇到" nan"时其他元素就不会检查或比较并执行以下语句并返回值:

if (@isnan@(mp)) { /* nan encountered; it's maximal */ return 0; }

因此返回" nan"作为函数的答案!

检查此代码,遇到第一个" nan"后立即返回,并在相应函数中返回其位置

In [1]: import numpy as np

In [2]: m = np.array([1., 0., -np.inf, np.nan])

In [3]: n = np.array([np.nan, 1., np.nan, 0.])

In [4]: np.argmin(m)

Out[4]: 3

In [5]: np.argmin(n)

Out[5]: 0

并且" np.nan -np.inf"之类的操作返回" False",因为此处" nan"不能与任何数字" -inf"和" False"进行比较在上述每种情况下,操作都不是比较的答案,而是由于一种异常或上述代码的执行,这是由于逻辑错误而引起的,因为尽管无穷大,但相对于"无"而言到一个数字!

因此,如果删除数组中的所有" nan",然后通过" np.nanmin()"计算min,则输出将如预期的那样-inf,这不会出现问题!

因此," Nan"不小于或大于" inf"或" -inf",因为实际上它与任何这些数字或任何数字都不可比,与任何数字相比,它将返回" False"!

In [1]: np.nan < 1

Out[1]: False

In [2]: np.nan > 1

Out[2]: False

等等 ...............

希望能帮助到你 !!

从技术上讲,numpy c代码不会引发异常,它只会返回。 if (@isnan@(mp)) { * nan encountered; its maximal * return 0; }。 stackoverflow.com/questions/41320568/

是的,通过引发异常,我的意思是,一旦遇到" nan",我便停止了正常执行,我不知道谢谢@hpaulj

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Centos7 Yum安装 PHP5.5,5.6,7.0

默认的版本太低了&#xff0c;手动安装有一些麻烦&#xff0c;想采用Yum安装的可以使用下面的方案&#xff1a; 1.检查当前安装的PHP包yum list installed | grep php如果有安装的PHP包&#xff0c;先删除他们yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x…

fanuc机器人控制柜接线_fanuc机器人控制柜crma-15.16接线图(2)

资源描述&#xff1a;B-82725EN-2/05 CONNECTIONS - 149 - 4. PERIPHERAL DEVICE AND END EFFECTOR INTERFACES 4.3 INTERFACE FOR PERIPHERAL DEVICES 4.3.1 Connection between the Main board (CRMA15, CRMA16) and Peripheral Devices Peripheral device control interface…

sql 存储过程 盲注入_一次非常规 SQL 注入(informixsql)的利用过程

介绍一个客户正在寻找升级他们的思科 UCM 软件&#xff0c;并希望保证他们的实现是安全配置的。在评估期间&#xff0c;我们在 Cisco UCM 管理员门户中发现了一个经过身份验证的 SQL 注入问题。在大多数情况下&#xff0c;可以使用 SQLMap 或其他工具来自动发现问题。由于我们是…

自定义鼠标指针轨迹_win10鼠标自定义颜色,鼠标属性设置,这样就不眯眼了

电脑用多了&#xff0c;眼睛受不了&#xff0c;这时候就需要各种护眼模式&#xff0c;把画面放大&#xff0c;指针放大&#xff0c;来解决眼睛盯着电脑累的问题了&#xff0c;一不留神发现鼠标指针变大好处多多&#xff0c;下面设置一下win10系统鼠标指针大小、颜色都是默认设置…

mysql linux_linux下mysql下载安装

1、下载地址https://www.mysql.com/downloads/选择community server点击DOWLOAD选择版本&#xff0c;当前选择的5.6版本点击下载mysql-5.6.38-linux-glibc2.12-i686.tar.gz选择no thanks2、安装mysqltar -xvzf mysql-5.6.38-linux-glibc2.12-i686.tar.gzmv mysql-5.6.38-linux…

老男孩python课后作业_老男孩python基础知识练习题(一)中

20、字符串是否可迭代&#xff1f;如可以请使用for循环每一个元素&#xff1f;>>> name " aleX ">>> for i in name:... print(i)21、请代码实现&#xff1a;利用下划线将列表的每一个元素拼接成字符串&#xff0c;li [‘alex‘,‘eric‘,‘rain…

java代码生成器 快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码...

A代码编辑器&#xff0c;在线模版编辑&#xff0c;仿开发工具编辑器&#xff0c;pdf在线预览&#xff0c;文件转换编码B 集成代码生成器 [正反双向](单表、主表、明细表、树形表&#xff0c;快速开发利器)快速表单构建器 freemaker模版技术 &#xff0c;0个代码不用写&#xff…

php mysql搭建_PHP+MYSQL的搭建_MySQL

现在准备研究下微信的开发&#xff0c;所以要研究下PHP了&#xff0c;但对这个平台还是很陌生的&#xff0c;所以网上找了些资料并测试&#xff0c;现贴出来给大家参考。第一步&#xff1a;我们先下载【PHPStudy 2013】或者最新版本&#xff1b;下载地址&#xff1a; http://do…

python 精度损失_Python的浮点数损失精度问题

本篇讨论的现象可以从下面这段脚本体现出来&#xff1a;>>> x 0.0>>> for i in range(10):x 0.1print(x)0.10.20.300000000000000040.40.50.60.70.79999999999999990.89999999999999990.9999999999999999>>>即&#xff1a;为什么有几行的输出看起…

锐捷交换机实验案例:vlan间互访的配置与验证

组网需求&#xff1a; 1、如下图所示&#xff0c;某用户内网被划分为VLAN 10、VLAN 20、VLAN 30&#xff0c;以实现相互间的2 层隔离&#xff1b; 2、3 个VLAN 对应的IP 子网分别为192.168.10.0/24 、192.168.20.0/24 、192.168.30.0/24&#xff0c;3 个VLAN 通过3 层核心交换机…

mysql innodb隔离级别_浅析MySQL InnoDB的隔离级别

本文就将对上面这两个问题进行解答&#xff0c;分析事务的隔离级别以及相关锁机制。隔离性简介隔离性主要是指数据库系统提供一定的隔离机制&#xff0c;保证事务在不受外部并发操作影响的"独立"环境执行&#xff0c;意思就是多个事务并发执行时&#xff0c;一个事务…

sql 2008服务器内存一直居高不下_经验之谈:内存问题造成数据库性能异常怎么破?...

作者&#xff1a;罗贵林原文链接&#xff1a;https://mp.weixin.qq.com/s/2e5eKSoGlU9J4Rjq1zwLnw导读&#xff1a;在使用数据库的过程中&#xff0c;内存不足常常会引起数据库异常。但是内存不足&#xff0c;又会为数据库带来哪些具体的影响呢&#xff1f;本次&#xff0c;我们…

mybatis 打印SQL语句

方法一&#xff1a; 在mybatis-config.xml中配置加一个setting <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd&quo…

mysql 字符串匹配函数_mysql 自定义函数 实现字符串匹配

先来一个截图&#xff1a;fSearch函数的第一个参数为单一字符串(即 没有特殊字符串隔开)fSearch函数的第一个参数非单一字符串多个字符串同样可以匹配。函数代码&#xff1a;DELIMITER $$Create function fSearch(targetStr VARCHAR(100),findStr VARCHAR(100)) RETURNS INTBEG…

stm32时钟树_先学STM8,还是学STM32?

有朋友问&#xff1a;我学习过51&#xff0c;接下来我是先学习STM8&#xff0c;还是STM32呢&#xff1f;物联网STM32入门 - 直播课程 - 创客学院​www.makeru.com.cn嵌入式开发直播课 - STM32 USART串口的应用 - 创客学院直播室​www.makeru.com.cn1、写在前面想要明白这个问题…

如何使用django显示一张图片

django显示图片对新手来说真的算是一个坑。。 这里记录下小白爬坑的历程。 首先&#xff0c;你需要一个可以运行的django服务器&#xff0c;能显示正常的html文本&#xff0c;无法显示图片 这是html的文本&#xff0c;可以显示文字&#xff0c;无法显示图片 <h1>An Image…

mysql创建时间字段6_mysql 时间字段介绍

mysql时间类型大概有5种&#xff0c;如下图1、创建数据库create table t1 (id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,d1_data date,d2_time time,d3_datatime datetime,d4_year year,d5_timestamp TIMESTAMP);字符串方式插入INSERT INTO t1 (d1_data,d2_time,d3_datati…

python课设代码_python课程编程题汇总(上)

python编程题汇总众所周知&#xff0c;由于疫情的原因&#xff0c;大家都在上网课&#xff0c;我也不例外啦~用这个贴子来记录也和大家分享一下我们课上的编程讨论题中篇在此→python课程编程题汇总(中)下篇在此→python课程编程题汇总(下)1、货币转换编写货币转换程序描述&…

安装Python 3.6 在Ubuntu 16.04 LTS 版本

在ubuntu 16.04版本中&#xff0c;系统默认安装 了python 2.7和3.5版本&#xff0c;因为系统本身用到python的程序&#xff0c;删除默认的版本又担心系统有问题&#xff0c;那有没有办法同时在安装和使用python 3.6版本呢&#xff1f;下文将一起安装python 3.6并修改原系统的py…

matlab动画_弹簧振子振动的matlab动画演示

用Matlab阐述物理中的胡克定律&#xff0c;为弹簧振子震动的matlab动画示意图&#xff0c;另有一个为不同质量不同弹簧系数的比较。spring.m,compare.mrectangle(position,[12,8.5,2,0.3],FaceColor,[0.5,0.3,0.4]); axis([0,15,-1,10]); hold on plot([13,13],[7,8.5],r,li…