在Python中使用scipy/numpy将数组值设为-inf
我有一个数组,长得像这样:
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的值的索引,然后我只需要把这些值设成负无穷大就行了。谢谢!
2 个回答
2
如果你的数组类型是整数,那你就不能把任何值设置为 -infinity
(负无穷大)。这个值在IEEE浮点数中是一个特殊的值。解决这个问题的简单方法就是使用浮点数类型的数组。
10
你的数组 a
是一个整数数组。整数不能表示无穷大,只有浮点数才能做到这一点。所以有两种解决方法:
可以换成浮点数数组。
也可以使用一个很大的负整数,比如
-2147483648
,如果你使用的是32位整数。虽然这不是无穷小,但在某些情况下,它的表现会类似。
此外,你可以简单地写
a[a <= 0] = <somevalue>