用无穷大替换 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
中的 inf
是 float.[=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
在第二种方法中,您必须指定在代码中使用哪个整数。
假设我有以下 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
中的 inf
是 float.[=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
在第二种方法中,您必须指定在代码中使用哪个整数。