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

作者:偶尔也吃鸡 时间:2023-09-19 20:37:24 

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

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

此时应该用另一个方法

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

使用np.mean()的效果

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

使用np.nanmean()的效果

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

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])

来源:https://blog.csdn.net/qq_41689620/article/details/84980267

标签:numpy,数组,求平均,nan值
0
投稿

猜你喜欢

  • unplugin-auto-import的配置以及eslint报错解决详解

    2024-05-10 14:09:10
  • DTS构建组件及其如何完成数据转换服务

    2009-01-20 15:37:00
  • 数据库表的查询操作(实验二)

    2024-01-25 13:18:59
  • ThinkPHP基于think-queue的队列插件实现消息推送

    2023-05-25 05:59:12
  • Vue+express+Socket实现聊天功能

    2024-06-05 09:19:03
  • asp按关键字查询XML的代码

    2011-04-21 11:10:00
  • sqlserver数据库最大Id冲突问题解决方法之一

    2024-01-28 01:48:06
  • python执行等待程序直到第二天零点的方法

    2023-08-27 11:49:21
  • 查看ASP详细错误提示信息的图文设置方法

    2011-02-05 11:02:00
  • 使用Python docx修改word关键词颜色的操作

    2022-01-15 01:47:34
  • 单点登录之cas集成sonar的配置方法

    2022-01-17 00:45:58
  • ES6的Promise用法详解

    2024-04-18 10:46:41
  • php 字符串中是否包含指定字符串的多种方法

    2023-06-11 20:21:38
  • Pandas读取并修改excel的示例代码

    2022-08-18 23:27:34
  • 浅析mysql 语句的调度优先级及改变

    2024-01-24 21:27:35
  • ASP文件中的安全问题

    2011-04-14 11:15:00
  • Mysql数据库的安全性问题释疑

    2009-02-26 16:20:00
  • 用js封装的时间设置器

    2013-08-04 23:28:46
  • SQL Server 2016 CTP2.2安装配置方法图文教程

    2024-01-18 19:04:29
  • Golang Gin局部和全局中间件使用详解

    2023-07-10 03:03:00
  • asp之家 网络编程 m.aspxhome.com