【问题标题】:Setting values of an array to -inf in Python with scipy/numpy使用 scipy/numpy 在 Python 中将数组的值设置为 -inf
【发布时间】:2010-12-02 22:45:31
【问题描述】:

我有一个如下所示的数组:

a = [ -22  347 4448  294  835 4439  587  326]

我想将其 0 或更小的值设置为 -inf。我尝试了以下方法:

a[where(a <= 0)] = -inf

当我这样做时,我得到了错误:

OverflowError: cannot convert float infinity to integer

知道为什么会这样以及如何解决吗? “where”函数应该返回小于或等于 0 的值的索引,并且赋值应该只将这些值设置为 -inf。谢谢。

【问题讨论】:

    标签: python numpy scipy


    【解决方案1】:

    您的数组a 是一个整数数组。整数不能代表无穷大——只有浮点数可以。所以有修复:

    1. 改为使用浮点数数组。

    2. 使用较大的负整数值,例如-2147483648 如果您使用的是 32 位整数。当然这与 -infinity 不同,但在某些情况下它的行为相似。

    另外,你可以简单地写

    a[a <= 0] = <somevalue>
    

    【讨论】:

      【解决方案2】:

      如果您的数组类型是整数,您将无法将任何值设置为-infinity。这是 IEEE 浮点中的一个特殊值。修复它的明显方法是使用浮点数组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-22
        • 2023-03-07
        • 2018-08-29
        • 2011-10-29
        • 2020-02-29
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多