Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numpy/NaN差异混淆_Python_Pandas_Numpy - Fatal编程技术网

Python numpy/NaN差异混淆

Python numpy/NaN差异混淆,python,pandas,numpy,Python,Pandas,Numpy,当我试图在pandasdataframe的行中查找非nan元素的平均值/和时,遇到了这个问题。看来 df.apply(np.mean, axis=1) 很好 但是,将np.mean应用于包含nan的numpy数组将返回一个nan 这些都是在什么地方指定的吗?我不想在路上被烧掉……numpy的mean函数首先检查其输入是否有mean方法,正如@EdChum在中所解释的那样 使用df.apply时,传递给函数的输入是pandas.Series。因为pandas.Series有一个mean方法,所以

当我试图在
pandas
dataframe的行中查找非nan元素的平均值/和时,遇到了这个问题。看来

df.apply(np.mean, axis=1)
很好

但是,将
np.mean
应用于包含nan的
numpy
数组将返回一个nan


这些都是在什么地方指定的吗?我不想在路上被烧掉……

numpy的mean函数首先检查其输入是否有mean方法,正如@EdChum在中所解释的那样

使用
df.apply
时,传递给函数的输入是pandas.Series。因为pandas.Series有一个mean方法,所以numpy使用该方法而不是使用自己的函数。默认情况下,pandas.Series.mean忽略NaN

您可以通过“值”属性访问基础numpy数组,并将其传递给函数:

df.apply(lambda x: np.mean(x.values), axis=1)

这将使用numpy的版本。

numpy的mean函数首先检查其输入是否有mean方法,如@EdChum在中所述

使用
df.apply
时,传递给函数的输入是pandas.Series。因为pandas.Series有一个mean方法,所以numpy使用该方法而不是使用自己的函数。默认情况下,pandas.Series.mean忽略NaN

您可以通过“值”属性访问基础numpy数组,并将其传递给函数:

df.apply(lambda x: np.mean(x.values), axis=1)

这将使用numpy的版本。

Divakar正确地建议使用np.nanmean


如果我可以回答这个问题的话,语义是不同的,因为Divakar正确地建议使用np.nanmean


如果我可以回答这个问题的话,它的语义是不同的,因为当@Divakar用
np.nanmean
保存你自己时,它对
np.sum
np.std
和其他的做了同样的工作,但问题依然存在:
pandas
numpy
中的语义为何不同(考虑到
pandas
中使用的函数是
np.mean
)。我认为pandas中使用的函数应该是nanmean,但是我们需要验证这一点。用
np.nanmean
@Divakar对
np.sum
np.std
等做同样的工作?@Divakar我知道答案是肯定的,但问题仍然存在:为什么
pandas
numpy
的语义不同(假设pandas中使用的函数是
np.mean
)。我认为pandas中使用的函数是nanmean,但我们需要验证这一点。