Python numpy.asarray_chkfinite()
numpy.asarray_chkfinite()函数在我们想把输入转换成数组时使用,检查是否有NaN(Not A Number)或Infs(Infinities)。输入包括标量、列表、图元的列表、图元、图元的图元、列表的图元和ndarrays。
语法 : numpy.asarray_chkfinite(arr, dtype=None, order=None)
参数 :
arr :[array_like] 输入数据,以任何可以转换为浮点型数组的形式。这包括标量,列表,图元的列表,图元,图元的图元,列表的图元和ndarrays。
dtype :默认情况下,数据类型是由输入数据推断出来的。
order :是否使用行为主(C风格)或列为主(Fortran风格)的内存表示。默认为 “C”。
返回 :[ndarray] arr的阵列解释。如果输入已经是ndarray,则不进行复制。如果arr是ndarray的子类,将返回基类ndarray。
代码#1:列表到数组
# Python program explaining
# numpy.asarray_chkfinite() function
import numpy as geek
my_list = [1, 3, 5, 7, 9]
print ("Input list : ", my_list)
out_arr = geek.asarray_chkfinite(my_list, dtype ='float')
print ("output array from input list : ", out_arr)
输出 :
Input list : [1, 3, 5, 7, 9]
output array from input list : [ 1. 3. 5. 7. 9.]
代码#2:元组到数组
# Python program explaining
# numpy.asarray_chkfinite() function
import numpy as geek
my_tuple = ([1, 3, 9], [8, 2, 6])
print ("Input tuple : ", my_tuple)
out_arr = geek.asarray_chkfinite(my_tuple, dtype ='int8')
print ("output array from input tuple : ", out_arr)
输出 :
Input tuple : ([1, 3, 9], [8, 2, 6])
output array from input tuple : [[1 3 9]
[8 2 6]]
注意 :numpy.asarray_chkfinite()函数在arr包含NaN(非数字)或Inf(无穷大)时引发ValueError。
代码 #3 :
# Python program explaining
# numpy.asarray_chkfinite() function
# when value error occurs
import numpy as geek
my_list = [1, 3, 5, 7, geek.inf, geek.nan]
print ("Input scalar : ", my_scalar)
out_arr = geek.asarray_chkfinite(my_list)
print ("output fortan array from input scalar : ", out_arr)
输出 :
ValueError: array must not contain infs or NaNs