我有一个看起来像这样的数组:
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
是一个整数数组.整数不能表示无穷大 - 只有浮点数才可以.所以有修复:
请改用浮点数组.
使用较大的负整数值,例如,-2147483648
如果您使用的是32位整数.当然,这与-infinity不同,但在某些情况下它的行为相似.
此外,你可以简单地写
a[a <= 0] = <somevalue>
Run Code Online (Sandbox Code Playgroud)