Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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_Numpy_Tensorflow_Matplotlib_Math - Fatal编程技术网

Python numpy数组的平均值返回Nan

Python numpy数组的平均值返回Nan,python,numpy,tensorflow,matplotlib,math,Python,Numpy,Tensorflow,Matplotlib,Math,我有一个np.array,我想计算它的平均值。当我运行代码时,这部分代码返回Nan: data-=np.mean(数据,dtype=np.float64) 问题是什么?您的阵列中很可能有nan 您可以选择不属于NaN的所有其他元素,如: my_array = my_array[~np.isnan(my_array)] 因为数字和NaN之间的任何操作都会返回NaN,因此如果数据数组至少包含一个NaN,则np.mean操作将返回NaN。您可以使用np.nanmean函数计算平均值(检查): 编辑

我有一个
np.array
,我想计算它的平均值。当我运行代码时,这部分代码返回Nan:

data-=np.mean(数据,dtype=np.float64)

问题是什么?

您的阵列中很可能有
nan

您可以选择不属于
NaN
的所有其他元素,如:

my_array = my_array[~np.isnan(my_array)]

因为数字和NaN之间的任何操作都会返回NaN,因此如果
数据
数组至少包含一个NaN,则
np.mean
操作将返回NaN。您可以使用
np.nanmean
函数计算平均值(检查):

编辑:对于同时包含NaN和Inf值的数组

如果数组还包含Inf值,则需要计算平均值,而不考虑这两个值

>>将numpy作为np导入
>>>x=np.array([np.nan,np.inf,1])
>>>np.平均值(x)
楠
>>>np.nanmean(x)
inf
>>>np.nanmean(x[x~=np.isinf(x)])
1
或者,您可以使用
np.nan\u to_num
将数组转换为值,在这里您可以决定哪些值可以替换nan、+Inf和-Inf值,这样以后每个常规函数都可以工作。例如,在您的情况下,如果您想在平均值中同时丢弃Inf和NaN,您可以将每个“坏”值转换为NaN,并在结果数组上应用
np.nanmean

>>将numpy作为np导入
>>>x=np.array([np.nan,np.inf,1])
>>>y=np.nan\u to_num(x,nan=np.nan,posinf=np.nan)
>>>y
数组([nan,nan,1.]))
>>>y_平均值=np.nanmean(y)
>>>你是说
1

我猜数组中可能有N,或者数组是空的。@dmuir:我检查了数组,它的一些值​​你是楠。我该怎么办?您能添加一些示例数据吗?
np.nan\u to_num(x)
可用于替换nan值。@我添加了此代码并更改了值​​但是这次在执行代码(data-=np.mean(data))之后,np.mean返回无穷大。有什么问题吗?我这样做了,但它返回了无穷大。问题出在哪里?数组也可能包含无限值。在这种情况下,您肯定希望忽略它们。我编辑了我的答案。我检查了我的数据,它没有无穷大的值,但在执行代码后,它返回无穷大。我能做些什么呢?您能共享您的数据(或数据的子集)吗?
np.min
np.max
返回什么?当你绘制它时,你看到了什么?
data -= np.nanmean(data, dtype=np.float64)