【发布时间】:2016-08-18 18:05:04
【问题描述】:
我尝试使用 Numpy 的 nanmax 函数来获取矩阵列中所有非 nan 值的最大值,对于某些它有效,对于某些它返回 nan 作为最大值。但是,每一列中都有非 nan 值,只是为了确保我在 R 中使用 max(x, na.rm = T) 尝试了同样的事情并且那里一切都很好。
有人知道为什么会发生这种情况吗?我唯一能想到的是我从熊猫框架中转换了 numpy 矩阵,但我真的不知道......
np.nanmax(datamatrix, axis=0)
matrix([[1, 101, 193, 1, 163.0, 10.6, nan, 4.7, 142.0, 0.47, 595.0,
170.0, 5.73, 24.0, 27.0, 23.0, 361.0, 33.0, 94.0, 9.2, 16.8, nan,
nan, 91.0, nan, nan, nan, nan, 0.0, 105.0, nan, nan, nan, nan,nan,
nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan, nan, nan, nan]], dtype=object)
【问题讨论】:
-
显示样本矩阵和结果。
-
除非您同时发布显示结果的最小矩阵和导致问题的代码,否则我们无能为力。这个问题目前非常模糊。
-
这个帖子很好地说明了前两位评论者要求的例子:stackoverflow.com/help/mcve
-
nanmax()可能无法正确处理对象数组。如果x是数组,请检查x.dtype。 Pandas 使用对象数组,因此如果您从 Pandas DataFrame 转换,您的数组也可能是对象数组。 -
例如,
np.nanmax(np.array([2.0, np.nan, np.nan]))按预期返回 2.0,但np.nanmax(np.array([2.0, np.nan, np.nan], dtype=object))生成警告并返回nan。