首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么numpy阵列的max和min是nan?

为什么numpy阵列的max和min是nan?
EN

Stack Overflow用户
提问于 2020-07-12 11:31:39
回答 4查看 1.5K关注 0票数 0

是什么原因,为什么我的numpy数组的最大和最小值是nan?我检查了我的数组:

代码语言:javascript
运行
AI代码解释
复制
for i in range(data[0]):
    if data[i] == numpy.nan:
        print("nan")    

我的数据里没有南。我的搜索错了吗?如果不是:麦克斯和敏成为南的原因是什么?

EN

回答 4

Stack Overflow用户

发布于 2020-07-12 11:41:55

给你:

代码语言:javascript
运行
AI代码解释
复制
import numpy as np

a = np.array([1, 2, 3, np.nan, 4])

print(f'a.max() = {a.max()}')
print(f'np.nanmax(a) = {np.nanmax(a)}')

print(f'a.min() = {a.min()}')
print(f'np.nanmin(a) = {np.nanmin(a)}')

输出:

代码语言:javascript
运行
AI代码解释
复制
a.max() = nan
np.nanmax(a) = 4.0
a.min() = nan
np.nanmin(a) = 1.0
票数 2
EN

Stack Overflow用户

发布于 2020-07-12 12:24:21

Balaji精确地展示了如何找到min / max,即使源数组包含NaN,在这个问题上也没有什么可添加的。

但是,您的代码示例还包含值得指出的其他缺陷。

  1. 您的循环包含for i in range(data[0]):。您可能希望为数据的每个元素执行这个循环,但是您的循环将被执行的次数与数据的初始元素的值一样多。 变体:
代码语言:javascript
运行
AI代码解释
复制
- If it is e.g. _1_, it will be executed only once.
- If it is _0_ or negative, it will not be executed at all.
- If it is >= than the size of _data_, _IndexError_ exception will be raised.
- If your array contains at least 1 _NaN_, then the whole array is of _float_ type (_NaN_ is a special case of _float_) and you get _TypeError_ exception: _'numpy.float64' object cannot be interpreted as an integer_.

Remedium (可能的变体之一):这个循环应该从for elem in data:开始,内部的代码应该使用elem作为当前的数据元素。

  1. 下一行包含if data[i] == numpy.nan:。即使您将其更正为if elem == np.nan:,if块中的代码也不会执行。原因是,根据定义,np.nan是而不是等于任何其他值,即使这个其他值是另一个np.nan。 Remedium:改为if np.isnan(elem):(Balaji在他的评论how to Change 中写道,我添加了为什么是)。

最后:如何快速检查数组中的_NaN_s:

  1. 要获得详细列表,每个元素是否为NaN,运行np.isnan(data),您将得到一个bool数组。
  2. 要获得单个答案,无论数据是否包含至少一个NaN,无论在何处,运行np.isnan(data).any()

这段代码更短,运行速度也更快。

票数 1
EN

Stack Overflow用户

发布于 2020-07-12 12:31:32

原因是np.nan == x总是假的,即使x是np.nan。这与NaN在维基百科中的定义是一致的。

检查你自己:

代码语言:javascript
运行
AI代码解释
复制
In [4]: import numpy as np

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

如果要检查数字x是否为np.nan,则必须使用

代码语言:javascript
运行
AI代码解释
复制
np.isnan(x)

如果您想要获得最大/分钟的np.array和nan,请使用np.nanmax()/ np.nanmin()

代码语言:javascript
运行
AI代码解释
复制
minval = np.nanmin(data)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62865647

复制
相关文章
Java中对map按key或val排序
Collections是一个工具类,sort是其中的静态方法,是用来对List类型进行排序的,它有两种参数形式:
sunonzj
2022/06/21
1.6K0
int a; int* a; int** a; int (*a)[]; int (*a)(int)
a) int a;表示一个内存空间,这个空间用来存放一个整数(int); b) int* a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放整数的空间,即a)中提到的空间; c) int** a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放指针的空间,并且指向的这个空间中的指针,指向一个整数。也简单的说,指向了一个b)中提到的空间; d) int (*a)[4];表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个长度为4、类型为int的数组;和int** a的区别在于,++、+=1之后的结果不一样,其他用法基本相同。 以上四种类型见上图表示。 e) int (*a)(int);表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个函数,这个函数有一个类型为int的参数,并且函数的返回类型也是int。
Twcat_tree
2022/11/30
2.3K0
int a; int* a; int** a; int (*a)[]; int (*a)(int)
lombok的val
今天遇到一个情况,我们知道把java代码粘贴到kt文件里,idea会自动转换java为kt
阿超
2023/02/22
9630
lombok的val
listnode.val java(string indexof方法)
有一列 1.给出 Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) 要求 Output: 7 -> 0 -> 8
全栈程序员站长
2022/08/01
6450
Train / Val / Test划分
合理的Train/Test集划分会有效地减少under-fitting和over-fitting现象
mathor
2020/01/15
2.2K0
VBA专题:Val函数
Val函数返回作为参数传递的字符串中的前导数字,它在无法识别为数字部分的第一个字符处停止读取字符串,但它不会在空格处停止。
fanjy
2022/11/16
1.5K0
jquery的html,text,val
.html()用为读取和修改元素的HTML标签 .text()用来读取或修改元素的纯文本内容 .val()用来读取或修改表单元素的value值。 这三个方法功能上的对比 .html(),.text(),.val()三种方法都是用来读取选定元素的内容;只不过.html()是用来读取元素的HTML内容(包括其Html标签),.text()用来读取元素的纯文本内容,包括其后代元素,.val()是用来读取表单元素的"value"值。其中.和.text()方法不能使用在表单元素上,而.val()只能使用在表单元素上;
marsggbo
2018/01/23
2K0
jquery的html,text,val
    1.html()用为读取和修改元素的HTML标签     2.text()用来读取或修改元素的纯文本内容     3.val()用来读取或修改表单元素的value值。
ydymz
2018/09/10
1.6K0
int(*p)[4] int*p[4]
1、int(*p)[4];------p为指向含4个元素的一维整形数组的指针变量(是指针) #include <stdio.h> #include <stdlib.h> int main() { int a[4]={1,2,3,4}; int (*p)[4]; p=&a; printf("%d\n",(*p)[3]); printf("%d\n",*p); return 0; } 2、int *p[4];-------定义指针数组p,它由4个指向整型数据的
谙忆
2021/01/19
2K0
java中string转换为int(int char)
// String change int public static void main(String[] args) { String str = “123”; int n; // first method // n = Integer.parseInt(str); n = 0; n = Integer.parseInt(str); System.out.println(“Integer.parseInt(str):”+ n); System.out.println(“\n”); //second method //n = Integer.valueOf(str).intValue();
全栈程序员站长
2022/07/28
1.9K0
java中string转换为int(int char)
JAVA将string转化为int(int怎么转string)
1). int i = Integer.parseInt([String]); 或
全栈程序员站长
2022/07/28
3K0
C# int int16 Int32 Int64的介绍[通俗易懂]
今天看到别人的代码中用到Int32,UInt32相关,想到自己平时用的都是int类型整数,就心生好奇的翻了一下资料:
全栈程序员站长
2022/09/21
3.6K0
.net Int16 、(int Int32)、 Int64 的区别
摘要: 关于什么是16位整数,32位整数,64位整数,请看这里:http://www.cnblogs.com/EasonJim/p/4837061.html Int16 值类型表示值介于 -32768 到 +32767 之间的有符号整数。
拓荒者
2019/03/14
2.7K0
int是什么_int a[4][4]
Int16 意思是16位整数(16bit integer),相当于short 占2个字节 -32768 ~ 32767
全栈程序员站长
2022/09/21
1.4K0
聊聊kotlin的val跟var
val:英文读value,代表是immutable, 只读的意思 比如下面这个kotlin代码
韦东锏
2021/09/29
1.2K0
聊聊kotlin的val跟var
2022-05-26:void add(int L, int R, int C)代表在arr[L...R]上每个数加C, int get(int L, int
2022-05-26:void add(int L, int R, int C)代表在arrL...R上每个数加C,
福大大架构师每日一题
2022/05/26
1.5K0
2022-05-26:void add(int L, int R, int C)代表在arr[L...R]上每个数加C, int get(int L, int
#define a int[10]与 typedef int a[10]用法
// #define a int[10] #include <stdio.h> #include <stdlib.h> #define a int[10] int main() { int *p=(int *)malloc(sizeof(a)); p[0]=1; printf("%d\n",p[0]); return 0; } // typedef int a[10]; #include <stdio.h> typedef int a[10]; int m
Daotin
2018/08/31
1.6K0
Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)[转]include <stdio.h>int func(int a, int b, int c, int d, int e,
声明:本文转自Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码),此文干货很多。
用户2930595
2018/08/23
4.2K0
Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)[转]include <stdio.h>int func(int a, int b, int c, int d, int e,
JAVA 枚举 String-int
/** * @author 姜兴琪 */ package cn.bycs.online.dealer.vo; /** * @author jiangxingqi * 车辆状态枚举 */ public enum NewCarStatusEnum { DRAFT("草稿",1), SUBMIT_RELEASE("提交发布",2), PUBLISH_SUCCESS("发布成功",3), AUDIT_DENY("审核不通过",4); private St
week
2018/08/27
3440
点击加载更多

相似问题

基本Regex需要帮助

15

需要Python Regex帮助(基本)

42

需要C语言的基本帮助

26

需要帮助来完成连接

10

需要帮助理解基本递归问题

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档