[英]The difference between np.mean and pandas.mean
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
獲得結果,如下所示:
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
值並保留被掩碼的數組。
但是,當我使用熊貓創建Panel並計算數組的平均值時:
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
相同的結果?
將面板構建為
p = pd.Panel(a.data)
然后您可以獲得您所得到的:
In [334]: p.mean(axis=0)
Out[334]:
0 1
0 2 3
1 2 3
2 2 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.