首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >np.mean和pandas.mean之间的区别

np.mean和pandas.mean之间的区别
EN

Stack Overflow用户
提问于 2014-01-13 20:22:25
回答 1查看 2K关注 0票数 0
代码语言:javascript
复制
import numpy as np
import pandas as pd
import numpy.ma as ma

a = np.zeros((2,3,2))
a[0]=1
a[1]=3

a[0,0,1]=np.nan
a[0,1,1]=np.nan
a=ma.masked_invalid(a)
a
Out[17]: 
masked_array(data =
 [[[1.0 --]
  [1.0 --]
  [1.0 1.0]]

 [[3.0 3.0]
  [3.0 3.0]
  [3.0 3.0]]],
             mask =
 [[[False  True]
  [False  True]
  [False False]]

 [[False False]
  [False False]
  [False False]]],
       fill_value = 1e+20)

我希望使用np.mean获得如下结果:

代码语言:javascript
复制
b = np.mean(a,axis=0)
b

Out[18]: 

masked_array(data =
 [[2.0 3.0]
 [2.0 3.0]
 [2.0 2.0]],
             mask =
 [[False False]
 [False False]
 [False False]],
       fill_value = 1e+20)

当沿着axis=0计算数组的平均值时,它忽略NaN值并保留被屏蔽的数组。

但是当我使用pandas创建一个Panel并计算数组的平均值时:

代码语言:javascript
复制
p = pd.Panel(a)
b1=p.mean(axis=0)
b1.values
Out[25]: 
array([[ 2. ,  1.5],
       [ 2. ,  1.5],
       [ 2. ,  2. ]])

似乎pandas中的mean方法将NaN值视为零,并且没有掩码数组。

我的问题是,如何使用pandas获得与使用np.mean相同的结果

EN

回答 1

Stack Overflow用户

发布于 2014-01-13 20:35:12

将面板构建为

代码语言:javascript
复制
p = pd.Panel(a.data)

然后你就可以得到你想要的东西:

代码语言:javascript
复制
In [334]: p.mean(axis=0)
Out[334]: 
   0  1
0  2  3
1  2  3
2  2  2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21091218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档