使用np.nanmean时所有具有nan的条目

问题描述 投票:0回答:1

在以下情况下如何克服除以零

A = 
[[3.0 5.0 nan nan nan]
[nan 5.0 nan 4.0 5.0]
[nan nan nan nan nan]
[nan nan 1.0 nan 5.0]
[5.0 nan nan 3.0 nan]
[1.0 2.0 nan nan 5.0]
[2.0 nan nan nan nan]
[nan nan nan 2.0 1.0]
[nan 1.0 5.0 nan nan]
[nan nan 5.0 1.0 nan]]

Mean = np.nanmean(A, axis=1)

这将除以零,因为A[2,:]的所有条目都为nan

当所有值均为nan时如何返回0

python numpy nan mean
1个回答
0
投票

尽管可以使用np.nan_to_num(Mean)进行清理,但仍然会从np.nanmean收到警告。一种替代方法是在将不良行送入np.nanmean之前对其进行清理:

import numpy as np
nan = np.nan
a = np.array([
  [3.0, 5.0, nan, nan, nan],
  [nan, 5.0, nan, 4.0, 5.0],
  [nan, nan, nan, nan, nan],
])

a0 = a.copy()
a0[np.all(np.isnan(a0), axis=1)] = 0
mean = np.nanmean(a0, axis=1)

结果:

array([4. , 4.66666667, 0. ])

© www.soinside.com 2019 - 2024. All rights reserved.