我有一个如下所示的数组:
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。谢谢。
最佳答案
您的数组 a
是一个整数数组。整数不能表示无穷大——只有 float 可以。所以有修复:
改用 float 数组。
使用较大的负整数值,例如
-2147483648
如果您使用的是 32 位整数。当然这与 -infinity 不同,但在某些情况下它的行为相似。
此外,你可以简单地写
a[a <= 0] = <somevalue>
关于python - 使用 scipy/numpy 在 Python 中将数组的值设置为 -inf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4340787/