Numpy 如何在Python中使用’None’值
在Python的科学计算库中,Numpy是较为常用的一个。Numpy提供了众多的操作函数,不仅可以让我们快速的进行数值计算,还可以用来处理数组。但是,随着工作中,我们经常会遇到无法确定数值的情况,例如传感器捕捉到的信号并不能保证每个时刻都可用,需要在数据中添加NaN值或None。Numpy中如何使用这些’None’值呢?
阅读更多:Numpy 教程
Numpy和’None’值
‘None’是Python中的一种特殊数据类型,所表示的是对象的空缺。与之相对的是NaN(非数字),这表示一个未定义或不可确定的浮点数。在Numpy中,我们同样可以使用这些’None’值对数组进行处理。
首先,我们需要导入Numpy模块。在Python的交互式命令窗口中,可以输入以下指令进行导入:
import numpy as np
在Numpy中,可以将’None’值视为一个特殊类型的数组元素,与其他标准数据类型一样可以被Numpy进行处理。因此,需要我们使用Numpy中的特殊函数来操作这些值。
将’None’值转化为Numpy数组
我们首先需要将’None’值转化为Numpy数组。可以使用Numpy中的np.array()函数来将Python列表转化为Numpy数组,对于其中的’None’值,可以使用Numpy提供的特殊函数进行处理。以下是一个使用’None’值的列表的例子:
my_list = [1, 2, None, 4, 5]
np_array = np.array(my_list)
在这个例子中,我们将一个普通的Python列表转化为了Numpy数组。可以看到,除了’None’值外,其他的元素均被正确的转化为了Numpy数组中的相应数据类型。
处理’None’值的替换
针对数组中出现的’None’值,Numpy提供了很多函数来进行替换。以下是一些常用的函数及其简单说明:
np.nan_to_num(arr, copy=True)
将数组中的NaN、正无穷和负无穷值转换为0或某个数。可以使用此函数来进行填充缺失数据,但请注意,NaN值一般推荐使用np.NaN来代替。
np_array_with_nan = np.array([1, 2, np.NaN, 4, 5])
np.nan_to_num(np_array_with_nan)
# 返回 array([1., 2., 0., 4., 5.])
np.isfinite(x, out=None)
测试数组中的元素是否为有限数。返回一个在每个位置上展示相应元素是否为有限数(非NaN、非inf)的布尔类型的数组,当在需要判断数据的时候,可以使用此函数来识别。
out = np.isnan(np.array([1, 2, np.NaN, 4, 5]))
print(out)
# 返回 array([False, False, True, False, False])
np.isinf(x, out=None)
测试数组中的元素是否为无限数。返回一个在每个位置上展示相应元素是否为无限数(正无穷和负无穷)的布尔类型的数组。
out = np.isinf(np.array([1, 2, np.inf, -np.inf, 5]))
print(out)
# 返回 array([False, False, True, True, False])
np.isneginf(x, out=None)
测试数组中的元素是否为负无穷。返回一个在每个位置上展示相应元素是否为负无穷的布尔类型的数组。
out = np.isneginf(np.array([1, 2, np.inf,-np.inf, 5]))
print(out)
# 返回 array([False, False, False, True, False])
np.isposinf(x, out=None)
测试数组中的元素是否为正无穷。返回一个在每个位置上展示相应元素是否为正无穷的布尔类型的数组。
out = np.isposinf(np.array([1, 2, np.inf, -np.inf, 5]))
print(out)
# 返回 array([False, False, True, False, False])
处理’None’值的删除
有时候,我们需要将数组中的’None’值进行删除,以便进行一些进一步的计算处理。Numpy中也提供了相应的函数来进行处理。以下是一些常用的函数及其简单说明:
np.where(condition[, x, y])
根据给定的条件返回相应位置的元素值。在处理’None’值时,可以使用此函数来进行筛选。
arr = np.array([1, 2, None, 4, 5])
out = np.where(arr != None)
print(out)
# 返回 (array([0, 1, 3, 4], dtype=int64),)
np.delete(arr, obj, axis=None)
从数组中删除指定的元素。可以使用此函数来删除’None’值所在的位置。
arr = np.array([1, 2, None, 4, 5])
out = np.delete(arr, np.where(arr == None))
print(out)
# 返回 array([1, 2, 4, 5])
总结
在Numpy中使用’None’值需要使用一些特殊函数进行处理。可以使用np.array()函数将’None’值转化为Numpy数组,使用np.nan_to_num()函数进行NaN值和无穷值的转换,以及使用np.where()和np.delete()函数来进行删除和其他的筛选操作。熟练掌握这些函数可以极大的提高数据处理的效率,让科学计算更加准确!
极客笔记