新聞中心
這篇文章主要介紹Python如何實(shí)現(xiàn)使用空值進(jìn)行賦值None,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
python可以做什么
Python是一種編程語言,內(nèi)置了許多有效的工具,Python幾乎無所不能,該語言通俗易懂、容易入門、功能強(qiáng)大,在許多領(lǐng)域中都有廣泛的應(yīng)用,例如最熱門的大數(shù)據(jù)分析,人工智能,Web開發(fā)等。
0.摘要
在Python中,尤其是數(shù)組當(dāng)中,對(duì)于一些異常值往往需要進(jìn)行特殊處理。為了防止異常值與正常數(shù)據(jù)混淆,影響最終計(jì)算結(jié)果,常用的方法是將異常值置零或者置空。置零的方法較為簡單,本文主要介紹如果對(duì)python中的數(shù)據(jù)進(jìn)行置空。
1.賦值為None
對(duì)于一般數(shù)據(jù),可以直接為其賦值為None。
i = 1 i = None # int 型數(shù)據(jù)置空 s = "string" s = None # 字符串型數(shù)據(jù)置空 l = [1,2,3,4] l[2] = None # 列表中元素置空 print(i, s, l)
2.numpy類型
numpy 中的數(shù)據(jù)較為特殊,如果將一個(gè)int 型元素賦值為None,或者np.nan都會(huì)產(chǎn)生報(bào)錯(cuò):
a = np.arange(10)
a[2] = None
a = np.arange(10)
a[2] = np.nan
如果打印np.nan的類型,會(huì)發(fā)現(xiàn)np.nan是float類型的。
>>> type(np.nan)
在numpy數(shù)組中,將int型元素賦值為float類型,是不合法的。賦值語句不會(huì)報(bào)錯(cuò),但numpy會(huì)自動(dòng)將float類型轉(zhuǎn)為int型。
而打印None類型,會(huì)發(fā)現(xiàn)None沒有類型。
>>> type(None)
賦值報(bào)錯(cuò)的原因,個(gè)人認(rèn)為是:numpy判斷類型不符,但也無法完成類型轉(zhuǎn)換,所以產(chǎn)生了報(bào)錯(cuò)。
在numpy中,如果想將某一元素賦值為None或者這np.nan,可以先將數(shù)組轉(zhuǎn)換為float類型。
a = np.arange(10, dtype=float) a[2] = np.nan a[3] = None print(a)
從最終結(jié)果上看,不論是np.nan,還是None,在numpy中都以nan的形式出現(xiàn)。
補(bǔ)充知識(shí):Python 類型判斷 變量存在判斷 None與空字符串 is和==區(qū)別 nan inf判斷
一、類型變量
type
#判斷是否為整數(shù) type(varObj) is types.IntType StringType FloatType DictType TupleType ListType BooleanType
isinstance
isinstance(aaa,str)
type與isinstance區(qū)別
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里調(diào)用才會(huì)捕獲異常,所以采用字符串參數(shù)。
命名空間
'varname' in locals().keys()
'varname' in dir()
dir()不帶參數(shù)時(shí),返回當(dāng)前范圍內(nèi)的變量、方法和定義的類型列表;帶參數(shù)時(shí),返回參數(shù)的屬性、方法列表。如果參數(shù)包含方法dir(),該方法將被調(diào)用。如果參數(shù)不包含dir(),該方法將大限度地收集參數(shù)信息。
三、None與空字符串
有句話說的Python中萬物皆為對(duì)象。None也是對(duì)象。這就好理解None與空字符串NULL區(qū)別:
type(None)type('') >>> None == 0 //(int) False >>> None == ' ' //(str) False >>> None == False //(boolean) False
四、is和==區(qū)別
is判斷的是a對(duì)象是否就是b對(duì)象,是通過id來判斷的。
==判斷的是a對(duì)象的值是否和b對(duì)象的值相等,是通過value來判斷的。
>>> d = {"a":1} >>> dd = d.copy() >>> d is dd False >>> d == dd True
五、nan inf
記憶:對(duì)于is判斷,符合is的對(duì)象比較定義:對(duì)象is對(duì)象本身,對(duì)象不is新建對(duì)象。對(duì)于==判斷,除了nan,符合==的值比較的定義。對(duì)于nan在用==值比較時(shí),可以認(rèn)為,nan對(duì)象的值不==該nan對(duì)象的值,nan對(duì)象的值不==新建nan對(duì)象的值。
>>> 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對(duì)象時(shí)本身對(duì)象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") //前一個(gè)nan值不等于新建對(duì)象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如何實(shí)現(xiàn)使用空值進(jìn)行賦值None”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前題目:Python如何實(shí)現(xiàn)使用空值進(jìn)行賦值None-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://www.dlmjj.cn/article/pejcs.html