用无穷大替换 numpy 数组的值

Replace a value of a numpy array with infinty

假设我有以下 numpy 数组:

import numpy as np
from numpy import inf

x = np.array([1,2,3,4])

我想用无穷大替换该数组的第 j 个索引,例如

x[2] = inf

有什么方法可以做到这一点吗?因为当我尝试时出现以下错误:

OverflowError: cannot convert float infinity to integer

感谢您的回答!

在构造函数中使用 dtype 参数或在分配 inf 之前使用 arr.astype(np.float32) 将数组转换为浮点数

import numpy as np
from numpy import inf

x = np.array([1,2,3,4], dtype=np.float32)
x[2] = inf

在声明数组时这样声明:np.array([1, 2, 3], dtype='f')numpy 中的 inffloat.[=13= 类型]

问题是您使用的是 'int' 数组。

通过定义数组来

 x = np.array([1.0,2.0,3.0,4.0])

或者:

 x = np.array([1,2,3,4], dtype='f')

正确执行不会有任何问题。

在内部,'inf' 是一个 float const,它不支持 int 类型。

np.iinfo(np.int32).max  # ---- 2147483647

np.iinfo(np.int32).min  # ---- -2147483648

np.iinfo(np.int64).max  # ---- 9223372036854775807

np.iinfo(np.int64).min  # ---- -9223372036854775808

1. 您可以将您的数组转换为浮点型。

x = np.array([0,1,2], dtype=np.float32)

然后你可以使用 np.inf

赋无穷大

2.也可以设置为无穷大的整数个数。

ii16 = np.iinfo(np.int16)
x[2] = ii16.max

在第二种方法中,您必须指定在代码中使用哪个整数。