【问题标题】:np.nansum ignores zeros in Countersnp.nansum 忽略 Counters 中的零
【发布时间】:2019-06-09 14:54:38
【问题描述】:

我在 python 中有两个计数器:counter1 和 counter2。当我尝试对它们执行 np.nansum 时,其中一个字段被忽略,因为它包含零(如果我将值更改为非零,则代码可以正常工作)。是否有任何解决方法可以获取输出字典中的所有输入键?

counter1 = Counter({'sensitivity': 1.0, 'dice': 1.0, 'specificity': 1.0, 'precision': 1.0, 'c-factor': 0.0})
counter2 = Counter({'sensitivity': 1.0, 'dice': 1.0, 'specificity': 1.0, 'precision': 1.0, 'c-factor': 0.0})
c = np.nansum([counter1, counter2])

我得到的结果是:

c= Counter({'sensitivity': 2.0, 'specificity': 2.0, 'dice': 2.0, 'precision': 2.0})

比较,当我这样做时:

counter1 = Counter({'sensitivity': 1.0, 'dice': 1.0, 'specificity': 1.0, 'precision': 1.0, 'c-factor': 0.1})
counter2 = Counter({'sensitivity': 1.0, 'dice': 1.0, 'specificity': 1.0, 'precision': 1.0, 'c-factor': 0.1})
c = np.nansum([counter1, counter2])

我明白了:

c=Counter({'sensitivity': 2.0, 'specificity': 2.0, 'dice': 2.0, 'precision': 2.0, 'c-factor': 0.2})

【问题讨论】:

    标签: python-3.x numpy


    【解决方案1】:

    this post。如果您想保持零,则需要update。尝试做:

    c=np.nansum(counter1).copy()   #I don't know why you use np.nansum, but you can pass it like this
    c.update(np.nansum(counter2))
    c
    >>Counter({'c-factor': 0.0,
         'dice': 2.0,
         'precision': 2.0,
         'sensitivity': 2.0,
         'specificity': 2.0})
    

    【讨论】:

    • 非常感谢您的回答,这正是我需要的解决方案。我使用 nansum 是因为有时 c 因子值是 nan(这是正确的),我只想在计算总和时忽略这些值。
    猜你喜欢
    • 2014-04-23
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 2020-12-10
    • 2020-07-09
    • 2019-06-28
    • 2020-05-19
    • 1970-01-01
    相关资源
    最近更新 更多