簡體   English   中英

np.mean和pandas.mean之間的區別

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM