Python 实现使用空值进行赋值 None
作者:shangyj17 发布时间:2021-04-12 07:01:09
0.摘要
在Python中,尤其是数组当中,对于一些异常值往往需要进行特殊处理。为了防止异常值与正常数据混淆,影响最终计算结果,常用的方法是将异常值置零或者置空。置零的方法较为简单,本文主要介绍如果对python中的数据进行置空。
1.赋值为None
对于一般数据,可以直接为其赋值为None。
i = 1
i = None # int 型数据置空
s = "string"
s = None # 字符串型数据置空
l = [1,2,3,4]
l[2] = None # 列表中元素置空
print(i, s, l)
2.numpy类型
numpy 中的数据较为特殊,如果将一个int 型元素赋值为None,或者np.nan都会产生报错:
a = np.arange(10)
a[2] = None
a = np.arange(10)
a[2] = np.nan
如果打印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.nan
a[3] = None
print(a)
从最终结果上看,不论是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:
pass
class B(A):
pass
isinstance(A(), A) # returns True
type(A()) == A # returns True
isinstance(B(), A) # returns True
type(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 dd
False
>>> d == dd
True
五、nan inf
记忆:对于is判断,符合is的对象比较定义:对象is对象本身,对象不is新建对象。对于==判断,除了nan,符合==的值比较的定义。对于nan在用==值比较时,可以认为,nan对象的值不==该nan对象的值,nan对象的值不==新建nan对象的值。
>>> inf = float("inf")
>>> ninf = float("-inf")
>>> nan = float("nan")
>>> inf is inf
True
>>> ninf is ninf
True
>>> nan is nan
True
>>> inf == inf
True
>>> ninf == ninf
True
>>> nan == nan // nan对象时本身对象nan
False
>>> 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
来源:https://blog.csdn.net/qq_17753903/article/details/89814716


猜你喜欢
- 内容摘要: 当用户填写页面<FORM>内容时所提供的全部值,或在浏览器地址栏输入在URL后的值,通过Form和QueryStrin
- 借助map实现golang中没有set数据结构,一般是通过map实现,因为map的key值是不能重复的示例type empty struct
- 1.物体识别本案例实现对特殊颜色物体的识别,并实现根据物体位置的改变进行控制跟随。import cv2 as cv# 定义结构元素kerne
- 一般说到组件,我首先想到的是弹窗,其他就大脑空白了。因为觉得这个是在项目中最常用的功能,提取出来方便复用的才是组件~然而我才发现这个想法是有
- 需求:1.大量csv文件,以数字命名,如1.csv、2.cvs等;2.逐个打开,对csv文件中的某一列进行格式修改;3.将更改后的内容写入新
- 数据库开发数据库应用,选择一个好的数据库是非常重要的。下面从一些方面比较了SQL Server与Oracle、DB2三种数据库,为你选择数据
- 如下:data = pd.read_csv('20180201.txt',sep = '|',dtype =
- Hinton在论文《Improving neural networks by preventing co-adaptation of fea
- 前言本文主要给大家介绍了关于Python3列表方法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。1 使用[]或
- 今天继续给大家介绍MySQL相关知识,本文主要内容是MySQL外键约束详解。一、MySQL外键约束作用外键约束(Foreign Key)即数
- 尾递归简介尾递归是函数返回最后一个操作是递归调用,则该函数是尾递归。递归是线性的比如factorial函数每一次调用都会创建一个新的栈(la
- 本文实例为大家分享了python3连接MySQL数据库的具体代码,供大家参考,具体内容如下#python3连接MySQL实例import p
- 本文使用的代码book_dict = {"price": 500, "bookName": &quo
- 什么是SeleniumSelenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流
- Vue.js 使用v-cloak后仍显示变量的解决方法v-cloak 这个指令是防止页面加载时出现 vuejs 的变
- 前言网站登录的时候我们常常会看到随机的验证码需要输入后台验证,如图:现在我们来实现在Django中通过自定制插件来实现随机验证check_c
- 本文实例讲述了Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法。分享给大家供大家参考,具体如下:#!/usr/bin
- 这篇文章主要介绍了python Opencv计算图像相似度过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- 之前项目有一个需求,业务人员使用中文编写一些自定义公式,然后需要我们后台执行将结果返回到界面上,于是就基于有限状态机写了这个词法分析器,比较
- ClickHouse是近年来备受关注的开源列式数据库(DBMS),主要用于数据联机分析(OLAP)领域,于2016年开源。目前国内社区火热,