【问题标题】:pylab histogram get rid of nanpylab直方图摆脱nan
【发布时间】:2013-10-06 01:42:45
【问题描述】:

当我的某些数据包含“非数字”值时,我无法制作直方图。我可以通过使用 numpy 中的nan_to_num 来消除错误,但是我得到了很多零值,这也会弄乱直方图。

pylab.figure()
pylab.hist(numpy.nan_to_num(A))
pylab.show()

所以想法是创建另一个数组,其中所有 nan 值都消失了,或者只是以某种方式在直方图中屏蔽它们(最好使用一些内置方法)。

【问题讨论】:

    标签: python numpy matplotlib histogram nan


    【解决方案1】:

    使用A[~np.isnan(A)] 从数组中删除np.nan 值,这将选择A 中不是nan 的所有条目,因此在计算直方图时它们将被排除。以下是如何使用它的示例:

    >>> import numpy as np
    >>> import pylab
    
    >>> A = np.array([1,np.nan, 3,5,1,2,5,2,4,1,2,np.nan,2,1,np.nan,2,np.nan,1,2])
    
    >>> pylab.figure()
    >>> pylab.hist(A[~np.isnan(A)])
    >>> pylab.show()
    

    【讨论】:

    • 行得通,谢谢(我只能在 4 分钟内接受您的回答)不完全确定您在文档中的何处找到 ~ 声明,但它行得通
    • 如果您不知道~ 运算符,您可以使用A[np.isfinite(A)],这可能是您想要的更多。
    • 请注意,在 numpy 之外,~! (not) 不同,~ 有时会返回您不期望的内容(例如 -2,其中计算为True)。请使用!,或者最好拼出not
    猜你喜欢
    • 2018-08-10
    • 2019-02-24
    • 2014-04-01
    • 1970-01-01
    • 2017-01-19
    • 2014-09-29
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多