numpy中np.nanmax和np.max的区别及坑

 更新时间:2022年02月11日 12:03:35   作者:AML杰  
这篇文章主要介绍了numpy中np.nanmax和np.max的区别及坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

np.nanmax和np.array([1,2,3,np.nan]).max()的区别

numpy中numpy.nanmax的官方文档

原理

在计算dataframe最大值时,最先用到的一定是Series对象的max()方法(),最终结果是4。

s1 = pd.Series([1,2,3,4,np.nan])
s1_max = s1.max()

但是笔者由于数据量巨大,列数较多,于是为了加快计算速度,采用numpy进行最大值的计算,但正如以下代码,最终结果得到的是nan,而非4。发现,采用这种方式计算最大值,nan也会包含进去,并最终结果为nan。

s1 = pd.Series([1,2,3,4,np.nan])
s1_max = s1.values.max()
>>>nan

通过阅读numpy的文档发现,存在np.nanmax的函数,可以将np.nan排除进行最大值的计算,并得到想要的正确结果。

当然不止是max,min 、std、mean 均会存在列中含有np.nan时,s1.values.min /std/mean ()返回nan的情况。

速度区别

速度由快到慢依次:

s1 = pd.Series([1,2,3,4,5,np.nan])
#速度由快至慢
np.nanmax(s1.values) > np.nanmax(s1) > s1.max() 

numpy中nan和常用方法

#!/usr/bin/env python
# -*- coding:utf-8 -*- 
# Author: Jia ShiLin
 
import numpy as np
 
a = np.arange(9, dtype=float).reshape(3, 3)
a[[[1], [2]]] = np.nan
print(a)
# isnan函数
print(np.isnan(a))
a[np.isnan(a)] = 0  # 把nan替换成中值或者均值
print(a)
 
print(np.count_nonzero(a))
 
# sum()统计求和
b = np.arange(12, dtype=int).reshape(2, 6)
print(b)
print(np.sum(b, axis=0))  # 得到结果和行的形状一样
print(np.sum(b, axis=1))
# .mean()
print(b.mean())
print(b.mean(axis=0))
print(b.mean(axis=1))
# np.median()中位数
print(np.median(b, axis=0))
# .min() .max()
# .ptp()机值
print(np.ptp(b))
# .std()标注差
print(np.std(b, axis=0))

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解python之协程gevent模块

    详解python之协程gevent模块

    这篇文章主要介绍了详解python之协程gevent模块,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • pyside6-uic生成py代码中文为unicode(乱码)的问题解决方案

    pyside6-uic生成py代码中文为unicode(乱码)的问题解决方案

    这篇文章主要介绍了如何解决pyside6-uic生成py代码中文为unicode(乱码)的问题,文中通过代码和图文介绍的非常详细,对大家解决问题有一定的帮助,需要的朋友可以参考下
    2024-02-02
  • Python解决pip install时出现的Could not fetch URL问题

    Python解决pip install时出现的Could not fetch URL问题

    这篇文章主要介绍了Python解决pip install时出现的Could not fetch URL问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python实现读取机器硬件信息的方法示例

    Python实现读取机器硬件信息的方法示例

    这篇文章主要介绍了Python实现读取机器硬件信息的方法,涉及Python针对计算机注册表、操作系统、处理器、网络等常见硬件信息读取操作相关实现技巧,需要的朋友可以参考下
    2018-06-06
  • python使用turtle库写六角形的思路与代码

    python使用turtle库写六角形的思路与代码

    学习Python,接触到turtle包,就用它来画一下六边形,下面这篇文章主要给大家介绍了关于python使用turtle库写六角形的思路与代码,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • Python字符串处理函数简明总结

    Python字符串处理函数简明总结

    这篇文章主要介绍了Python字符串处理函数简明总结,本文总结了一些常用的字符串处理函数,需要的朋友可以参考下
    2015-04-04
  • 如何计算 tensorflow 和 pytorch 模型的浮点运算数

    如何计算 tensorflow 和 pytorch 模型的浮点运算数

    FLOPs 是 floating point operations 的缩写,指浮点运算数,可以用来衡量模型/算法的计算复杂度。本文主要讨论如何在 tensorflow 1.x, tensorflow 2.x 以及 pytorch 中利用相关工具计算对应模型的 FLOPs,需要的朋友可以参考下
    2022-11-11
  • Python自定义模块的创建与使用

    Python自定义模块的创建与使用

    这篇文章主要给大家介绍了关于Python自定义模块创建与使用的相关资料,文中还给大家分享了python打包用户自定义模块的方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • python switch 实现多分支选择功能

    python switch 实现多分支选择功能

    这篇文章主要介绍了python switch 实现多分支选择功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • python基础之迭代器与生成器

    python基础之迭代器与生成器

    这篇文章主要为大家介绍了python迭代器与生成器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11

最新评论