使用scipy/numpy在Python中将数组的值设置为-inf

4 python numpy scipy

我有一个看起来像这样的数组:

a = [ -22  347 4448  294  835 4439  587  326]
Run Code Online (Sandbox Code Playgroud)

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

a[where(a <= 0)] = -inf
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我收到错误:

OverflowError: cannot convert float infinity to integer
Run Code Online (Sandbox Code Playgroud)

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

Sve*_*ach 10

你的数组a是一个整数数组.整数不能表示无穷大 - 只有浮点数才可以.所以有修复:

  1. 请改用浮点数组.

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

此外,你可以简单地写

a[a <= 0] = <somevalue>
Run Code Online (Sandbox Code Playgroud)