在以下情况下如何克服除以零:
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
?
尽管可以使用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. ])