使用numpy对数组求平均时如何忽略nan值

 更新时间:2022年02月11日 11:50:00   作者:偶尔也吃鸡  
这篇文章主要介绍了使用numpy对数组求平均时如何忽略nan值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

numpy对数组求平均时忽略nan值

在对numpy数组求平均np.mean()或者求数组中最大最小值np.max()/np.min()时,如果数组中有nan,此时求得的结果为:nan,那么该如何忽略其中的nan呢?

此时应该用另一个方法

  • np.nanmean(),np.nanmax(),np.nanmin()

使用np.mean()的效果

mean

使用np.nanmean()的效果

np.nanmean()

numpy含nan值进行归一化操作

方法一

import numpy as np
A = np.array([[  7,     4,   5,  7000],
              [  1,   900,   9,   nan],
              [  5, -1000, nan,   100],
              [nan,   nan,   3,  1000]])
#Compute NaN-norms
L1_norm = np.nansum(np.abs(A), axis=1)
L2_norm = np.sqrt(np.nansum(A**2, axis=1))
max_norm = np.nanmax(np.abs(A), axis=1)
#Normalize rows
A_L1 =  A / L1_norm[:,np.newaxis] # A.values if Dataframe
A_L2 =  A / L2_norm[:,np.newaxis]
A_max = A / max_norm[:,np.newaxis]
#Check that it worked
L1_norm_after = np.nansum(np.abs(A_L1), axis=1)
L2_norm_after = np.sqrt(np.nansum(A_L2**2, axis=1))
max_norm_after = np.nanmax(np.abs(A_max), axis=1)
 In[182]: L1_norm_after
Out[182]: array([1., 1., 1., 1.])
 In[183]: L2_norm_after
Out[183]: array([1., 1., 1., 1.])
 In[184]: max_norm_after
Out[184]: array([1., 1., 1., 1.])

方法二

rom numpy import nan, nanmean
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
A = [[  7,     4,   5,  7000],
     [  1,   900,   9,   nan],
     [  5, -1000, nan,   100],
     [nan,   nan,   3,  1000]]
scaler.fit(A)
In [45]: scaler.mean_
Out[45]: array([4.33333333,  -32.,    5.66666667, 2700.])
In [46]: scaler.transform(A)
Out[46]: array([[ 1.06904497,  0.04638641, -0.26726124,  1.40399977],
                [-1.33630621,  1.20089267,  1.33630621,         nan],
                [ 0.26726124, -1.24727908,         nan, -0.84893009],
                [        nan,         nan, -1.06904497, -0.55506968]])
In [54]: nanmean(scaler.transform(A), axis=0)
Out[54]: array([ 1.48029737e-16,  0.00000000e+00, -1.48029737e-16,0.00000000e+00])

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

相关文章

  • Python使用Pandas生成日报的实现代码

    Python使用Pandas生成日报的实现代码

    Pandas是Python中一个强大的数据处理库,它提供了许多功能强大的数据结构和数据分析工具,在本文中,我们将介绍Pandas的基本概念和如何使用它生成一个包含今天到未来20个工作日的日期列表的Excel文件,需要的朋友可以参考下
    2023-11-11
  • python常见字符串处理函数与用法汇总

    python常见字符串处理函数与用法汇总

    这篇文章主要介绍了python常见字符串处理函数与用法,结合实例形式详细分析了Python字符串操作函数find、join、replace及split功能、使用技巧与操作注意事项,需要的朋友可以参考下
    2019-10-10
  • python实现简单银行管理系统

    python实现简单银行管理系统

    这篇文章主要为大家详细介绍了python实现简单银行管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • python 装饰器的使用与要点

    python 装饰器的使用与要点

    python的装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能;装饰器的返回值也是一个函数对象。简单的说装饰器就是一个用来返回函数的函数
    2021-05-05
  • Python操作MySQL数据库9个实用实例

    Python操作MySQL数据库9个实用实例

    这篇文章主要介绍了Python操作MySQL数据库9个实用实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • 详解PyQt5中textBrowser显示print语句输出的简单方法

    详解PyQt5中textBrowser显示print语句输出的简单方法

    这篇文章主要介绍了详解PyQt5中textBrowser显示print语句输出的简单方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Python获取脚本所在目录的正确方法

    Python获取脚本所在目录的正确方法

    这篇文章主要介绍了Python获取脚本所在目录的正确方法,需要的朋友可以参考下
    2014-04-04
  • pycharm使用Translation插件实现翻译功能

    pycharm使用Translation插件实现翻译功能

    PyCharm是一款很流行的Python编辑器,经常遇到在PyCharm中把中文翻译成英文的需求,下面这篇文章主要给大家介绍了关于pycharm使用Translation插件实现翻译功能的相关资料,需要的朋友可以参考下
    2023-05-05
  • Python 的迭代器与zip详解

    Python 的迭代器与zip详解

    本篇文章主要介绍Python 的迭代器与zip,可迭代对象的相关概念,有需要的小伙伴可以参考下,希望能够给你带来帮助
    2021-11-11
  • Flask蓝图学习教程

    Flask蓝图学习教程

    在Flask中,使用蓝图Blueprint来分模块组织管理。蓝图实际可以理解为是一个存储一组视图方法的容器对象,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10

最新评论