您的位置:首页技术文章
文章详情页

Python 实现使用空值进行赋值 None

浏览:3日期:2022-08-02 14:23:03

0.摘要

在Python中,尤其是数组当中,对于一些异常值往往需要进行特殊处理。为了防止异常值与正常数据混淆,影响最终计算结果,常用的方法是将异常值置零或者置空。置零的方法较为简单,本文主要介绍如果对python中的数据进行置空。

1.赋值为None

对于一般数据,可以直接为其赋值为None。

i = 1i = None # int 型数据置空s = 'string's = None # 字符串型数据置空l = [1,2,3,4]l[2] = None # 列表中元素置空print(i, s, l)

Python 实现使用空值进行赋值 None

2.numpy类型

numpy 中的数据较为特殊,如果将一个int 型元素赋值为None,或者np.nan都会产生报错:

a = np.arange(10)a[2] = None

Python 实现使用空值进行赋值 None

a = np.arange(10)a[2] = np.nan

Python 实现使用空值进行赋值 None

如果打印np.nan的类型,会发现np.nan是float类型的。

>>> type(np.nan)<class ’float’>

在numpy数组中,将int型元素赋值为float类型,是不合法的。赋值语句不会报错,但numpy会自动将float类型转为int型。

而打印None类型,会发现None没有类型。

>>> type(None)<class ’NoneType’>

赋值报错的原因,个人认为是:numpy判断类型不符,但也无法完成类型转换,所以产生了报错。

在numpy中,如果想将某一元素赋值为None或者这np.nan,可以先将数组转换为float类型。

a = np.arange(10, dtype=float)a[2] = np.nana[3] = Noneprint(a)

Python 实现使用空值进行赋值 None

从最终结果上看,不论是np.nan,还是None,在numpy中都以nan的形式出现。

补充知识:Python 类型判断 变量存在判断 None与空字符串 is和==区别 nan inf判断

一、类型变量

type

#判断是否为整数type(varObj) is types.IntType StringType FloatType DictType TupleType ListType BooleanType

isinstance

isinstance(aaa,str)

type与isinstance区别

class A: passclass B(A): passisinstance(A(), A) # returns Truetype(A()) == A # returns Trueisinstance(B(), A) # returns Truetype(B()) == A # returns False

二、变量存在

异常捕获

try: print self.fileReadOpen except Exception: pass else: del self.fileReadOpen

def isset(v): try : type (eval(v)) except : return 0 else : return 1

isset(’varname’) //变量只能在try里调用才会捕获异常,所以采用字符串参数。

命名空间

’varname’ in locals().keys()’varname’ in dir()

dir()不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法dir(),该方法将被调用。如果参数不包含dir(),该方法将最大限度地收集参数信息。

三、None与空字符串

有句话说的Python中万物皆为对象。None也是对象。这就好理解None与空字符串NULL区别:

type(None)<class ’NoneType’>type(’’)<class ’’str’>>>> None == 0 //(int)False>>> None == ’ ’ //(str)False>>> None == False //(boolean)False

四、is和==区别

is判断的是a对象是否就是b对象,是通过id来判断的。

==判断的是a对象的值是否和b对象的值相等,是通过value来判断的。

>>> d = {'a':1}>>> dd = d.copy()>>> d is ddFalse>>> d == ddTrue

五、nan inf

记忆:对于is判断,符合is的对象比较定义:对象is对象本身,对象不is新建对象。对于==判断,除了nan,符合==的值比较的定义。对于nan在用==值比较时,可以认为,nan对象的值不==该nan对象的值,nan对象的值不==新建nan对象的值。

>>> inf = float('inf')>>> ninf = float('-inf')>>> nan = float('nan')>>> inf is infTrue>>> ninf is ninfTrue>>> nan is nanTrue>>> inf == infTrue>>> ninf == ninfTrue>>> nan == nan // nan对象时本身对象nanFalse>>> inf is float('inf')False>>> ninf is float('-inf')False>>> nan is float('nan')False>>> inf == float('inf')True>>> ninf == float('-inf')True>>> nan == float('nan') //前一个nan值不等于新建对象float('nan')的值False

判断nan方法:

使用math模块:

>>> import math>>> math.isinf(inf)True>>> math.isinf(ninf)True>>> math.isnan(nan)True>>> math.isinf(float('inf'))True>>> math.isinf(float('-inf'))True>>> math.isnan(float('nan'))True

利用自身判断:

>>> def isnan(num): return num != num>>> isnan(float('nan'))True

使用numpy:

>>> import numpy as np>>> >>> np.isnan(np.nan)True>>> np.isnan(float('nan'))True>>> np.isnan(float('inf'))False

以上这篇Python 实现使用空值进行赋值 None就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持好吧啦网。

标签: Python 编程
相关文章: