numpy.asarray_chkfinite() 是一个与 numpy.asarray() 类似的函数,但有一个重要的区别:它会额外检查输入数组中的所有元素是否是有限的(即不包含 NaN 或 Inf)。如果数组中包含 NaN 或 Inf 值,asarray_chkfinite() 将抛出错误。因此,它适用于希望确保输入数据是数值上有限的场景,例如在数值计算中对精度有要求时。本文主要介绍一下NumPy中asarray_chkfinite方法的使用。

numpy.asarray_chkfinite

numpy.asarray_chkfinite(a, dtype=None, order=None)     [source]

将输入转换为数组,检查NaN或Infs。

参数 :

a :array_like

输入数据,可以转换为数组的任何形式。 

这包括列表,元组列表,元组,元组元组,

列表元组和ndarray。

 成功不需要NaN或Infs。

dtype :data-type, 可选

默认情况下,从输入数据中推断出数据类型。

或der{‘C’, ‘F’}, 可选

是使用row-major(C-style)

还是column-major(Fortran-style)内存表示形式。

 默认为'C'

返回值 :

out :ndarray

数组的解释 如果输入已经是ndarray,

则不执行复制。 如果a是ndarray的子类,

则返回基类ndarray。

Raises :

ValueError

如果a包含NaN(非数字)或Inf(无穷大),

则引发ValueError。

例子

1)数组中不包含 NaN 或 Inf

import numpy as np

# 数组中不包含 NaN 或 Inf
arr1 = [1, 2, 3, 4]
safe_arr1 = np.asarray_chkfinite(arr1)
print(safe_arr1)

# 包含 NaN:将抛出 ValueError
arr2 = [1, 2, np.nan, 4]
try:
    safe_arr2 = np.asarray_chkfinite(arr2)
except ValueError as e:
    print(f"Error: {e}")

# 包含 Inf:将抛出 ValueError
arr3 = [1, 2, np.inf, 4]
try:
    safe_arr3 = np.asarray_chkfinite(arr3)
except ValueError as e:
    print(f"Error: {e}")

2)将列表转换为数组

所有元素都是有限的,asarray_chkfinite 等同于 asarray

import numpy as np

# 将列表转换为数组,所有元素都是有限的,
# asarray_chkfinite 等同于 asarray
a = [1, 2]
arr = np.asarray_chkfinite(a, dtype=float)
print("转换为数组:", arr)import numpy as np

# 将列表转换为数组,所有元素都是有限的,
# asarray_chkfinite 等同于 asarray
a = [1, 2]
arr = np.asarray_chkfinite(a, dtype=float)
print("转换为数组:", arr)

推荐文档

相关文档

大家感兴趣的内容

随机列表