使用numpy对数组求平均时怎么忽略nan值

使用numpy对数组求平均时怎么忽略nan值

这篇文章主要介绍“使用numpy对数组求平均时怎么忽略nan值”,在日常操作中,相信很多人在使用numpy对数组求平均时怎么忽略nan值问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”使用numpy对数组求平均时怎么忽略nan值”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

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

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

此时应该用另一个方法

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

使用np.mean()的效果

使用np.nanmean()的效果

numpy含nan值进行归一化操作

方法一

importnumpyasnpA=np.array([[7,4,5,7000],[1,900,9,nan],[5,-1000,nan,100],[nan,nan,3,1000]])#ComputeNaN-normsL1_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)#NormalizerowsA_L1=A/L1_norm[:,np.newaxis]#A.valuesifDataframeA_L2=A/L2_norm[:,np.newaxis]A_max=A/max_norm[:,np.newaxis]#CheckthatitworkedL1_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_afterOut[182]:array([1.,1.,1.,1.])In[183]:L2_norm_afterOut[183]:array([1.,1.,1.,1.])In[184]:max_norm_afterOut[184]:array([1.,1.,1.,1.])

方法二

romnumpyimportnan,nanmeanfromsklearn.preprocessingimportStandardScalerscaler=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])

到此,关于“使用numpy对数组求平均时怎么忽略nan值”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注恰卡编程网网站,小编会继续努力为大家带来更多实用的文章!

发布于 2022-02-11 22:43:30
收藏
分享
海报
0 条评论
34
上一篇:r2dbc在Spring webFlux中怎么使用 下一篇:基于NET Core的Nuget包制作、发布和运用方法
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码