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

标签 python numpy scipy

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

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 可以。所以有修复:

  1. 改用 float 数组。

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

此外,你可以简单地写

a[a <= 0] = <somevalue>

关于python - 使用 scipy/numpy 在 Python 中将数组的值设置为 -inf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4340787/

相关文章:

python - 预测下一个数字

python - 对数 Gamma 函数的快速算法

python - 如何禁用 scipy.optimize.basinhopping 中的局部最小化过程?

python - 计算快速傅里叶变换中的频率

python - numpy.array bool 值到二进制?

python - 来自同一个 python 程序的多个 GUI 屏幕

python - 从大型歌手中寻找最匹配的词

python - 如何管理跨多个数据集的查找

python - NumPy - 删除包含相同元素的子数组

python - 从 headless Pygame 实例获取图像