python教程—平均值、平均值和警告:空切片的平均值-Python实用宝典

python教程—平均值、平均值和警告:空切片的平均值

假设我构造了两个numpy数组:现在我找到了np。a和b的均值都返回nan:自numpy 1.8(2016年4月20日发布)以来,我们有幸得到了忽略nan值的nanmean:

假设我构造了两个numpy数组:

    a = np.array([np.NaN, np.NaN]) b = np.array([np.NaN, np.NaN, 3])

现在我找到了np。a和b的平均返回nan:

    >>> np.mean(a) nan >>> np.mean(b) nan

自numpy 1.8(2016年4月20日发布)以来,我们一直幸运地使用了nanmean,它忽略了nan值:

    >>> np.nanmean(b) 3.0

但是,当数组中没有,只有 nan值时,会发出警告:

    >>> np.nanmean(a) nan C:python-3.4.3libsite-packagesnumpylibnanfunctions.py:598: RuntimeWarning: Mean of empty slice warnings.warn("Mean of empty slice", RuntimeWarning)

我不喜欢压制警告;有没有更好的函数可以让我在没有警告的情况下得到纳米均值的行为?

回答

我实在看不出有什么好理由不干脆把警告压下去。

最安全的方法是使用警告。catch_warnings上下文管理器,只在您预期的地方禁用警告——这样,您就不会错过任何额外的运行时警告,这些警告可能会在代码的其他部分意外地引发:

    import numpy as np import warnings x = np.ones((1000, 1000)) * np.nan # I expect to see RuntimeWarnings in this block with warnings.catch_warnings(): warnings.simplefilter("ignore", category=RuntimeWarning) foo = np.nanmean(x, axis=1)

@dawg的解决方案也可以,但最终你必须采取额外的步骤来避免计算np。所有南方阵上的nanmean将产生一些额外的开销,您可以通过抑制警告来避免这些开销。此外,您的意图将在代码中得到更清晰的反映。

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
1

发表评论