1、Python類型操作符和內(nèi)建函數(shù)總結(jié)

本溪網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)成立與2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
表4.5列出了所有操作符和內(nèi)建函數(shù),其中操作符順序是按優(yōu)先級(jí)從高到低排列的。同一種灰度的操作符擁有同樣的優(yōu)先級(jí)。注意在operator模塊中有這些(和絕大多數(shù)Python)操作符相應(yīng)的同功能的函數(shù)可供使用。
表4.5 標(biāo)準(zhǔn)類型操作符和內(nèi)建函數(shù)
操作符/函數(shù)
描 述
結(jié) 果a
字符串表示
``
對(duì)象的字符串表示
str
內(nèi)建函數(shù)
cmp(obj1, obj2)
比較兩個(gè)對(duì)象
int
repr(obj)
對(duì)象的字符串表示
str
str(obj)
對(duì)象的字符串表示
str
type(obj)
檢測(cè)對(duì)象的類型
type
值比較
小于
bool
大于
bool
=
小于或等于
bool
=
大于或等于
bool
==
等于
bool
!=
不等于
bool
不等于
bool
對(duì)象比較
is
是
bool
is not
不是
bool
布爾操作符
not
邏輯反
bool
and
邏輯與
bool
or
邏輯或
bool
2、Python數(shù)值類型操作符和內(nèi)建函數(shù)
一、工廠函數(shù)
數(shù)值工廠函數(shù)總結(jié)類(工廠函數(shù)) 操作
bool(obj) b 返回obj對(duì)象的布爾值,也就是 obj.__nonzero__()方法的返回值。
int(obj, base=10) 返回一個(gè)字符串或數(shù)值對(duì)象的整數(shù)表 示, 類似string.atoi();
從Python 1.6起, 引入了可選的進(jìn)制參數(shù)。
long(obj, base=10) 返回一個(gè)字符或數(shù)據(jù)對(duì)象的長整數(shù)表 示,類似string.atol(),
從Python1.6起, 引入了可選的進(jìn)制參數(shù) float(obj) ,
返回一個(gè)字符串或數(shù)據(jù)對(duì)象的浮點(diǎn)數(shù) 表示,類似string.atof()。
complex(str) or返回一個(gè)字符串的復(fù)數(shù)表示,或 者根據(jù)給定的實(shí)數(shù),
complex(real, imag=0.0) (及一個(gè)可選 的虛數(shù)部分)生成一個(gè)復(fù)數(shù)對(duì)象。
二、內(nèi)建函數(shù)
1、分類
Python 有五個(gè)運(yùn)算內(nèi)建函數(shù)用于數(shù)值運(yùn)算:
abs(num), coerce(num1,num2), divmod(num1,num2), pow(num1,num2,mod=1)和 round(flt,ndig=0)
其中abs()返回給定參數(shù)的絕對(duì)值。如果參數(shù)是一個(gè)復(fù)數(shù), 那么就返回math.sqrt(num.real2 + num.imag2).
coerce()是一個(gè)數(shù)據(jù)類型轉(zhuǎn)換函數(shù),不過它的行為更像一個(gè)運(yùn)算符.數(shù)coerce()為程序員提供了不依賴Python 解釋器,而是自定義兩個(gè)數(shù)值類型轉(zhuǎn)換的方法。對(duì)一種新創(chuàng)建的數(shù)值類型來說, 這個(gè)特性非常有用.函數(shù)coerce()僅返回一個(gè)包含類型轉(zhuǎn)換完畢的兩個(gè)數(shù)值元素的元組.
divmod()內(nèi)建函數(shù)把除法和取余運(yùn)算結(jié)合起來, 返回一個(gè)包含商和余數(shù)的元組.對(duì)整數(shù)來說,它的返回值就是地板除和取余操作的結(jié)果.對(duì)浮點(diǎn)數(shù)來說,返回的商部分是math.floor(num1/num2),對(duì)復(fù)數(shù)來說,商部分是ath.floor((num1/num2).real).
pow()它和雙星號(hào) (**)運(yùn)算符都可以進(jìn)行指數(shù)運(yùn)算.不過二者的區(qū)別并不僅僅在于一個(gè)是運(yùn)算符,一個(gè)是內(nèi)建函數(shù).在Python 1.5 之前,并沒有 ** 運(yùn)算符,內(nèi)建函數(shù)pow()還接受第三個(gè)可選的參數(shù),一個(gè)余數(shù)參數(shù).如果有這個(gè)參數(shù)的, pow() 先進(jìn)行指數(shù)運(yùn)算,然后將運(yùn)算結(jié)果和第三個(gè)參數(shù)進(jìn)行取余運(yùn)算.這個(gè)特性主要用于密碼運(yùn)算,并且比 pow(x,y) % z 性能更好, 這是因?yàn)檫@個(gè)函數(shù)的實(shí)現(xiàn)類似于C 函數(shù)pow(x,y,z).
round()用于對(duì)浮點(diǎn)數(shù)進(jìn)行四舍五入運(yùn)算。它有一個(gè)可選的小數(shù)位數(shù)參數(shù).如果不提供小數(shù)位參數(shù), 它返回與第一個(gè)參數(shù)最接近的整數(shù)(但仍然是浮點(diǎn)類型).第二個(gè)參數(shù)告訴round 函數(shù)將結(jié)果精確到小數(shù)點(diǎn)后指定位數(shù).
2、函數(shù)int()/round()/math.floor()它們之間的不同之處:
函數(shù) int()直接截去小數(shù)部分.(返回值為整數(shù))
函數(shù) floor() 得到最接近原數(shù)但小于原數(shù)的整數(shù).(返回值為浮點(diǎn)數(shù))
函數(shù) round() 得到最接近原數(shù)的整數(shù).(返回值為浮點(diǎn)數(shù))
3、進(jìn)制轉(zhuǎn)換函數(shù):
返回字符串表示的8 進(jìn)制和16 進(jìn)制整數(shù),它們分別是內(nèi)建函數(shù):
oct()和 hex(). oct(255)='0377'/hex(255)='0xff'
函數(shù)chr()接受一個(gè)單字節(jié)整數(shù)值(0到255),返回一個(gè)字符串(ASCII),其值為對(duì)應(yīng)的字符.chr(97)='a'
函數(shù)ord()則相反,它接受一個(gè)字符(ASCII 或 Unicode),返回其對(duì)應(yīng)的整數(shù)值.ord('A')=65
3、Python字符串函數(shù)
(一)標(biāo)準(zhǔn)類型操作符和標(biāo)準(zhǔn)內(nèi)建函數(shù)
1)、標(biāo)準(zhǔn)類型操作符
,,=,=,==,!=,對(duì)象值得比較
注:做比較時(shí)字符串是按ASCII值的大小來比較的
is 對(duì)象身份比較
and,or,not 布爾類型
2)標(biāo)準(zhǔn)內(nèi)建函數(shù)
type(obj)
cmp(obj1,obj2)
str(obj)和repr(obj) 或反引號(hào)運(yùn)算符(``) 可以方便的以字符串的方式獲取對(duì)象的
內(nèi)容、類型、數(shù)值屬性等信息。str()函數(shù)得到的字符串可讀性好, 而repr()函數(shù)得到的字符
串通常可以用來重新獲得該對(duì)象, 通常情況下 obj == eval(repr(obj)) 這個(gè)等式是成立的
isinstance(obj,type) 判斷對(duì)象的類型
(二)序列操作
1、序列操作
字符串屬于序列對(duì)象,可以使用所有序列的操作和函數(shù)
切片 [] [:] [::]
簡單總結(jié):
*索引(S[i])獲取特定偏移的元素。
——第一個(gè)元素偏移為0
——(S[0])獲取第一個(gè)元素。
——負(fù)偏移索引意味著從最后或右邊反向進(jìn)行計(jì)數(shù)
——(S[-2])獲取倒數(shù)第二個(gè)元素(就像S[len(s)-2]一樣
*分片[S[i:j]提取對(duì)應(yīng)的部分作為一個(gè)序列
——右邊界不包含在內(nèi)
——分片的邊界默認(rèn)為0和序列的長度,如果沒有給出的話S[:]
——(S[1:3])獲取了從偏移為1,直到但不包括偏移為3的元素
——(S[1:])獲取從偏移為1到末尾之間的元素
——(S[:3])獲取從偏移為0直到但不包括偏移為3的元素
——(S[:-1])獲取從偏移為0直到但不包括最后一個(gè)元素之間的元素
——(S[:])獲取從偏移為0到末尾之間的元素,這有效地實(shí)現(xiàn)了頂層S拷貝
拷貝了一個(gè)相同值,但是是不同內(nèi)存區(qū)域的對(duì)象。對(duì)象字符串這樣不可變的對(duì)象不是很有用,但是對(duì)于可以實(shí)地修改的對(duì)象來說很有用。
比如列表。
擴(kuò)展分片:第三個(gè)限制值 【步進(jìn)】
完整形式:X[I:J:K]:這標(biāo)識(shí)索引X對(duì)象的元素,從偏移為I直到J-1,每隔K元素索引一次。第三個(gè)限制值,K,默認(rèn)為1
實(shí)例
Python Code
1
2
3
4
5
S='abcdefghijk'
S[1:10]
'bcdefghij'
S[1:10:2]
'bdfhj
也可以使用負(fù)數(shù)作為步進(jìn)。
分片表達(dá)式
Python Code
1
2
"hello"[::-1]
'olleh'
通過負(fù)數(shù)步進(jìn),兩個(gè)邊界的意義實(shí)際上進(jìn)行了反轉(zhuǎn)。
3、成員操作符 in ,not in
返回布爾值True 或False
可以使用string模塊來判斷輸入字符的合法性,可見成品中的idcheck.py
4、字符串連接
+ 連接字符串 ‘name’+' '+'jin'
字符串格式化 '%s %s' % ('name','jin')
join()方法 ' '.join(('name','jin')) ' '.join(['name','jin'])
5、刪除清空字符串
del aString
aString=''
(三)、序列函數(shù)
序列類型函數(shù)
len(str) 返回字串的長度
enumerate(iter):接受一個(gè)可迭代對(duì)象作為參數(shù),返回一個(gè)enumerate
max(str)/min(str):max()和min()函數(shù)對(duì)其他的序列類型可能更有用,但對(duì)于string類型它們能很好地運(yùn)行,返回最大或者最小的字符(按照ASCII 碼值排列),
zip([it0, it1,... itN]) 返回一個(gè)列表,其第一個(gè)元素是it0,it1,...這些元素的第一個(gè)元素組成的一個(gè)元組,第二個(gè)...,類推.
reversed(seq)c 接受一個(gè)序列作為參數(shù),返回一個(gè)以逆序訪問的迭代器(PEP 322)
sorted(iter,func=None,key=None,reverse=False) 接受一個(gè)可迭代對(duì)象作為參數(shù),返回一個(gè)有序的列表;可選參數(shù)func,key 和reverse 的含義跟list.sort()內(nèi)建函數(shù)的參數(shù)含義一樣.
注意:
sorted等需要在原處修改的函數(shù)無法用在字符串對(duì)象,但可以產(chǎn)生新的對(duì)象
sum處理的對(duì)象是數(shù)字,不能用在字符串
sorted(s)
['a', 'e', 'e', 'g', 'g', 'g', 'o']
(四)只適合于字符串類型的函數(shù)
1)raw_input()函數(shù)
內(nèi)建的raw_input()函數(shù)使用給定字符串提示用戶輸入并將這個(gè)輸入返回,下面是一個(gè)使
用raw_input()的例子:
user_input = raw_input("Enter your name: ")
prin user_input
2)str() and unicode()
str()和unicode()函數(shù)都是工廠函數(shù),就是說產(chǎn)生所對(duì)應(yīng)的類型的對(duì)象.它們接受一個(gè)任
意類型的對(duì)象,然后創(chuàng)建該對(duì)象的可打印的或者Unicode 的字符串表示. 它們和basestring 都
可以作為參數(shù)傳給isinstance()函數(shù)來判斷一個(gè)對(duì)象的類型
3)chr(), unichr(), and ord()
chr()函數(shù)用一個(gè)范圍在range(256)內(nèi)的(就是0 到255)整數(shù)做參數(shù),返回一個(gè)對(duì)應(yīng)的字符.unichr()跟它一樣,只不過返回的是Unicode 字符
ord()函數(shù)是chr()函數(shù)(對(duì)于8 位的ASCII 字符串)或unichr()函數(shù)(對(duì)于Unicode 對(duì)象)
的配對(duì)函數(shù),它以一個(gè)字符(長度為1 的字符串)作為參數(shù),返回對(duì)應(yīng)的ASCII 數(shù)值,或者Unicode
數(shù)值,如果所給的Unicode 字符超出了你的Python 定義范圍,則會(huì)引發(fā)一個(gè)TypeError 的異常
(五)、只適用于字符串的操作符
1、格式化操作符 %
字符串格式化符號(hào)
格式化字符 轉(zhuǎn)換方式
%c 轉(zhuǎn)換成字符(ASCII 碼值,或者長度為一的字符串)
%ra 優(yōu)先用repr()函數(shù)進(jìn)行字符串轉(zhuǎn)換
%s 優(yōu)先用str()函數(shù)進(jìn)行字符串轉(zhuǎn)換
%d / %i 轉(zhuǎn)成有符號(hào)十進(jìn)制數(shù)
%ub 轉(zhuǎn)成無符號(hào)十進(jìn)制數(shù)
%ob 轉(zhuǎn)成無符號(hào)八進(jìn)制數(shù)
%xb/%Xb (Unsigned)轉(zhuǎn)成無符號(hào)十六進(jìn)制數(shù)(x/X 代表轉(zhuǎn)換后的十六進(jìn)制字符的大
小寫)
%e/%E 轉(zhuǎn)成科學(xué)計(jì)數(shù)法(e/E 控制輸出e/E)
%f/%F 轉(zhuǎn)成浮點(diǎn)數(shù)(小數(shù)部分自然截?cái)?
%g/%G %e 和%f/%E 和%F 的簡寫
%% 輸出%
格式化操作符輔助指令
符號(hào) 作用
* 定義寬度或者小數(shù)點(diǎn)精度
- 用做左對(duì)齊
+ 在正數(shù)前面顯示加號(hào)( + )
sp 在正數(shù)前面顯示空格
# 在八進(jìn)制數(shù)前面顯示零('0'),在十六進(jìn)制前面顯示'0x'或者'0X'(取決于
用的是'x'還是'X')
0 顯示的數(shù)字前面填充‘0’而不是默認(rèn)的空格
% '%%'輸出一個(gè)單一的'%'
(var) 映射變量(字典參數(shù))
m.n m 是顯示的最小總寬度,n 是小數(shù)點(diǎn)后的位數(shù)(如果可用的話)
2、字符串模板: 更簡單的替代品
由于新式的字符串Template 對(duì)象的引進(jìn)使得string 模塊又重新活了過來,Template 對(duì)象
有兩個(gè)方法,substitute()和safe_substitute().前者更為嚴(yán)謹(jǐn),在key 缺少的情況下它會(huì)報(bào)一
個(gè)KeyError 的異常出來,而后者在缺少key 時(shí),直接原封不動(dòng)的把字符串顯示出
3、原始字符串操作符( r/R )
字符串抑制轉(zhuǎn)義r'帶特殊符號(hào)的字串'
myfile=open(r'C:\new\text.data','w')
4、Unicode 字符串操作符( u/U )
u'abc' U+0061 U+0062 U+0063
u'\u1234' U+1234
u'abc\u1234\n' U+0061 U+0062 U+0063 U+1234 U+0012
(六)字符串對(duì)象的方法:
1、刪減
T2.lstrip() 移除字符串前面字符(默認(rèn)空格),返回字符串
T2.rstrip() 移除字符串后面字符(默認(rèn)空格),返回字符串
T2.strip() 移除字符串前后面空格,返回字符串 默認(rèn)空格,可以其他字符 S.strip('"')
2、切割
partition(sep),
rpartition(sep),
splitlines([keepends]),#把S按照行分割符分為一個(gè)list,keepends是一個(gè)bool值,如果為真每行后而會(huì)保留行分割符
split([sep [,maxsplit]]),#以sep為分隔符,把S分成一個(gè)list。maxsplit表示分割的次數(shù)。默認(rèn)的分割符為空白字符
rsplit([sep[,maxsplit]]) #從右到左切割
備注:
partition()函數(shù)族是2.5版本新增的方法。它接受一個(gè)字符串參數(shù),并返回一個(gè)3個(gè)元素的 tuple 對(duì)象。
如果sep沒出現(xiàn)在母串中,返回值是 (sep, ‘’, ‘’);
否則,返回值的第一個(gè)元素是 sep 左端的部分,第二個(gè)元素是 sep 自身,第三個(gè)元素是 sep 右端的部分。
S.partition(';')
('', ';', ' generated by /sbin/dhclient-script\nnameserver 172.16.10.171\nnameserver 8.8.8.8\nnameserver 172.16.0.2\nnameserver 178.79.131.110\nnameserver 202.96.199.133\n')
參數(shù) maxsplit 是分切的次數(shù),即最大的分切次數(shù),所以返回值最多有 maxsplit+1 個(gè)元素。
s.split() 和 s.split(‘ ‘)的返回值不盡相同
' hello world!'.split()
['hello', 'world!']
' hello world!'.split(' ')
['', '', 'hello', '', '', 'world!']
S.split('\n',3)
['; generated by /sbin/dhclient-script', 'nameserver 172.16.10.171', 'nameserver 8.8.8.8', 'nameserver 172.16.0.2\nnameserver 178.79.131.110\nnameserver 202.96.199.133\n']
超過最大切割個(gè)數(shù)后面的全部為一個(gè)元素
按行切割
S
'; generated by /sbin/dhclient-script\nnameserver 172.16.10.171\nnameserver 8.8.8.8\nnameserver 172.16.0.2\nnameserver 178.79.131.110\nnameserver 202.96.199.133\n'
S.splitlines()
['; generated by /sbin/dhclient-script', 'nameserver 172.16.10.171', 'nameserver 8.8.8.8', 'nameserver 172.16.0.2', 'nameserver 178.79.131.110', 'nameserver 202.96.199.133']
產(chǎn)生差異的原因在于當(dāng)忽略 sep 參數(shù)或sep參數(shù)為 None 時(shí)與明確給 sep 賦予字符串值時(shí) split() 采用兩種不同的算法。
對(duì)于前者,split() 先去除字符串兩端的空白符,然后以任意長度的空白符串作為界定符分切字符串
即連續(xù)的空白符串被當(dāng)作單一的空白符看待;
對(duì)于后者則認(rèn)為兩個(gè)連續(xù)的 sep 之間存在一個(gè)空字符串。因此對(duì)于空字符串(或空白符串),它們的返回值也是不同的:
''.split()
[]
''.split(' ')
['']
3、變形
lower(),#全部小寫
upper(),#全部小寫
capitalize(),#首字母大寫
swapcase(),#大小寫交換
title()#每個(gè)單詞第一個(gè)大寫,其他小寫
備注
因?yàn)閠itle() 函數(shù)并不去除字符串兩端的空白符也不會(huì)把連續(xù)的空白符替換為一個(gè)空格,
所以建議使用string 模塊中的capwords(s)函數(shù),它能夠去除兩端的空白符,再將連續(xù)的空白符用一個(gè)空格代替。
Python Code
1
2
3
4
' hello world!'.title()
' Hello World!'
string.capwords(' hello world!')
'Hello World!'
4、連接
join(seq)
join() 函數(shù)的高效率(相對(duì)于循環(huán)相加而言),使它成為最值得關(guān)注的字符串方法之一。
它的功用是將可迭代的字符串序列連接成一條長字符串,如:
conf = {'host':'127.0.0.1',
... 'db':'spam',
... 'user':'sa',
... 'passwd':'eggs'}
';'.join("%s=%s"%(k, v) for k, v in conf.iteritems())
'passswd=eggs;db=spam;user=sa;host=127.0.0.1'
S=''.join(T) #使用空字符串分割把字符列表轉(zhuǎn)換為字符串
5、查找
count( sub[, start[, end]]),#計(jì)算substr在S中出現(xiàn)的次數(shù)
find( sub[, start[, end]]),#返回S中出現(xiàn)sub的第一個(gè)字母的標(biāo)號(hào),如果S中沒有sub則返回-1。start和end作用就相當(dāng)于在S[start:end]中搜索
index( substr[, start[, end]]),#與find()相同,只是在S中沒有substr時(shí),會(huì)返回一個(gè)運(yùn)行時(shí)錯(cuò)誤
rfind( sub[, start[,end]]),#返回S中最后出現(xiàn)的substr的第一個(gè)字母的標(biāo)號(hào),如果S中沒有substr則返回-1,也就是說從右邊算起的第一次出現(xiàn)的substr的首字母標(biāo)號(hào)
rindex( sub[, start[, end]])
T2.find('ie') 字符串方法調(diào)用:搜索
find()----找到的第一個(gè)符合字符的index
rfind()-----找到最后一個(gè)符合的字符的index
備注:
find()函數(shù)族找不到時(shí)返回-1,index()函數(shù)族則拋出ValueError異常。
另,也可以用 in 和 not in 操作符來判斷字符串中是否存在某個(gè)模板
6、替換
replace(old, new[,count]),#把S中的oldstar替換為newstr,count為替換次數(shù)。這是替換的通用形式,還有一些函數(shù)進(jìn)行特殊字符的替換
translate(table[,deletechars]) #使用上面的函數(shù)產(chǎn)后的翻譯表,把S進(jìn)行翻譯,并把deletechars中有的字符刪掉
備注:
replace()函數(shù)的 count 參數(shù)用以指定最大替換次數(shù)
translate() 的參數(shù) table 可以由 string.maketrans(frm, to) 生成
translate() 對(duì) unicode 對(duì)象的支持并不完備,建議不要使用
7、判定
isalnum(),#是否全是字母和數(shù)字,并至少有一個(gè)字符
isalpha(),是否全是字母,并至少有一個(gè)字符
isdigit(),是否全是數(shù)字,并至少有一個(gè)字符 ,如果是全數(shù)字返回True,否則返回False
islower(),#S中的字母是否全是小寫
isupper(),#S中的字母是否是大寫
isspace(),#是否全是空白字符,并至少有一個(gè)字符
istitle(),S是否是首字母大寫的
startswith(prefix[, start[, end]]), #是否以prefix開頭
endswith(suffix[,start[, end]]),#以suffix結(jié)尾
備注:
這些函數(shù)都比較簡單,顧名知義。需要注意的是*with()函數(shù)族可以接受可選的 start, end 參數(shù),善加利用,可以優(yōu)化性能。
另,自 Py2.5 版本起,*with() 函數(shù)族的 prefix 參數(shù)可以接受 tuple 類型的實(shí)參,當(dāng)實(shí)參中的某人元素能夠匹配,即返回 True。
8、填充
字符串在輸出時(shí)的對(duì)齊:
center(width[, fillchar]), 字符串中間對(duì)齊
ljust(width[, fillchar]), 字符串左對(duì)齊,不足部分用fillchar填充,默認(rèn)的為空格
rjust(width[, fillchar]), 字符串右對(duì)齊,不足部分用fillchar填充,默認(rèn)的為空格
zfill(width), 把字符串變成width長,并在右對(duì)齊,不足部分用0補(bǔ)足
expandtabs([tabsize])把字符串中的制表符(tab)轉(zhuǎn)換為適當(dāng)數(shù)量的空格。
fillchar 參數(shù)指定了用以填充的字符,默認(rèn)為空格
zfill的z為zero的縮寫,顧名思義,是以字符0進(jìn)行填充,用于數(shù)值輸出
expandtabs()的tabsize 參數(shù)默認(rèn)為8。它的功能是把字符串中的制表符(tab)轉(zhuǎn)換為適當(dāng)數(shù)量的空格。
9、編碼
encode([encoding[,errors]]),
decode([encoding[,errors]])
這是一對(duì)互逆操作的方法,用以編碼和解碼字符串。因?yàn)閟tr是平臺(tái)相關(guān)的,它使用的內(nèi)碼依賴于操作系統(tǒng)環(huán)境,
而unicode是平臺(tái)無關(guān)的,是Python內(nèi)部的字符串存儲(chǔ)
numpy計(jì)算平均數(shù) 標(biāo)準(zhǔn)差 相關(guān)系數(shù)等基本知識(shí)
NumPy 是python 語言的一個(gè)第三方庫,其支持大量高維度數(shù)組與矩陣運(yùn)算。此外,NumPy 也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)。
#導(dǎo)入Numpy庫,并命名為np
import numpy as np
#創(chuàng)建一維數(shù)組
a = np.array([1, 2, 3])
# NumPy可以很方便地創(chuàng)建連續(xù)數(shù)組,比如我使用arange或linspace函數(shù)進(jìn)行創(chuàng)建:
b = np.arange(1,5,1) // 返回一個(gè)有終點(diǎn)和起點(diǎn)、固定步長的排列,如起點(diǎn)是1,終點(diǎn)是4,步長為1,即【1,2,3,4】,
c = np.linspace(1,9,5) 返回一個(gè)有終點(diǎn)和起點(diǎn)、元素個(gè)數(shù)的的排列,如起點(diǎn)是1,終點(diǎn)是9,元素個(gè)數(shù)為5,即【1,3,5,7,9】
#通過NumPy可以自由地創(chuàng)建等差數(shù)組,同時(shí)也可以進(jìn)行加、減、乘、除、求n次方和取余數(shù)。
求和:np.sum(a)
求取平均值:np.mean(a)
求取中位數(shù):np.median(a)
求取加權(quán)平均數(shù):np.average(a)
求取方差:var() np.var(a)
求取最小值:np.amin(a)
求取最大值:np.amax(a)
將兩個(gè)數(shù)相加:np.add(x1, x2)
將兩個(gè)數(shù)相減:np.subtract(x1, x2)
將兩個(gè)數(shù)相乘:np.multiply(x1, x2)
將兩個(gè)數(shù)相除:np.divide(x1, x2)
立方:np.power(x1, x2)
除余:np.remainder(x1, x2)
相關(guān)系數(shù)計(jì)算:np.corrcoef(a1, a2) (a1、a2都是矩陣)
對(duì)于氣象繪圖來講,第一步是對(duì)數(shù)據(jù)的處理,通過各類公式,或者統(tǒng)計(jì)方法將原始數(shù)據(jù)處理為目標(biāo)數(shù)據(jù)。
按照氣象統(tǒng)計(jì)課程的內(nèi)容,我給出了一些常用到的統(tǒng)計(jì)方法的對(duì)應(yīng)函數(shù):
在計(jì)算氣候態(tài),區(qū)域平均時(shí)均要使用到求均值函數(shù),對(duì)應(yīng)NCL中的dim_average函數(shù),在python中通常使用np.mean()函數(shù)
numpy.mean(a, axis, dtype)
假設(shè)a為[time,lat,lon]的數(shù)據(jù),那么
需要特別注意的是,氣象數(shù)據(jù)中常有缺測(cè),在NCL中,使用求均值函數(shù)會(huì)自動(dòng)略過,而在python中,當(dāng)任意一數(shù)與缺測(cè)(np.nan)計(jì)算的結(jié)果均為np.nan,比如求[1,2,3,4,np.nan]的平均值,結(jié)果為np.nan
因此,當(dāng)數(shù)據(jù)存在缺測(cè)數(shù)據(jù)時(shí),通常使用np.nanmean()函數(shù),用法同上,此時(shí)[1,2,3,4,np.nan]的平均值為(1+2+3+4)/4 = 2.5
同樣的,求某數(shù)組最大最小值時(shí)也有np.nanmax(), np.nanmin()函數(shù)來補(bǔ)充np.max(), np.min()的不足。
其他很多np的計(jì)算函數(shù)也可以通過在前邊加‘nan’來使用。
另外,
也可以直接將a中缺失值全部填充為0。
np.std(a, axis, dtype)
用法同np.mean()
在NCL中有直接求數(shù)據(jù)標(biāo)準(zhǔn)化的函數(shù)dim_standardize()
其實(shí)也就是一行的事,根據(jù)需要指定維度即可。
皮爾遜相關(guān)系數(shù):
相關(guān)可以說是氣象科研中最常用的方法之一了,numpy函數(shù)中的np.corrcoef(x, y)就可以實(shí)現(xiàn)相關(guān)計(jì)算。但是在這里我推薦scipy.stats中的函數(shù)來計(jì)算相關(guān)系數(shù):
這個(gè)函數(shù)缺點(diǎn)和有點(diǎn)都很明顯,優(yōu)點(diǎn)是可以直接返回相關(guān)系數(shù)R及其P值,這避免了我們進(jìn)一步計(jì)算置信度。而缺點(diǎn)則是該函數(shù)只支持兩個(gè)一維數(shù)組的計(jì)算,也就是說當(dāng)我們需要計(jì)算一個(gè)場(chǎng)和一個(gè)序列的相關(guān)時(shí),我們需要循環(huán)來實(shí)現(xiàn)。
其中a[time,lat,lon],b[time]
(NCL中為regcoef()函數(shù))
同樣推薦Scipy庫中的stats.linregress(x,y)函數(shù):
slop: 回歸斜率
intercept:回歸截距
r_value: 相關(guān)系數(shù)
p_value: P值
std_err: 估計(jì)標(biāo)準(zhǔn)誤差
直接可以輸出P值,同樣省去了做置信度檢驗(yàn)的過程,遺憾的是仍需同相關(guān)系數(shù)一樣循環(huán)計(jì)算。
round函數(shù)python:
這個(gè)函數(shù)相當(dāng)于調(diào)去里面的一個(gè)函數(shù),有一個(gè)數(shù)組,從中里面調(diào)取一個(gè)數(shù)據(jù)。簡單的說,round是使用四舍五入對(duì)小數(shù)進(jìn)行位數(shù)控制的函數(shù),round(a,b),a參數(shù)是小數(shù),b是小數(shù)點(diǎn)后保留的位數(shù)。實(shí)際使用需要考慮的python2和python3版本的差異與小數(shù)精度的問題。
ound函數(shù)的使用用法
根據(jù)Excel的幫助得知,round函數(shù)就是返回一個(gè)數(shù)值,該數(shù)值是按照指定的小數(shù)位數(shù)進(jìn)行四舍五入運(yùn)算的結(jié)果。
round函數(shù)的語法是:ROUND(number,num_digits),即:Round(數(shù)值,保留的小數(shù)位數(shù))
Number:需要進(jìn)行四舍五入的數(shù)字。
Num_digits:指定的位數(shù),按此位數(shù)進(jìn)行四舍五入。
其中,如果num_digits大于0,則四舍五入到指定的小數(shù)位。
如果num_digits等于0,則四舍五入到最接近的整數(shù)。
如果num_digits小于0,則在小數(shù)點(diǎn)左側(cè)進(jìn)行四舍五入。
1、掌握Python語言的基本語法規(guī)則?
2、掌握不少于2 個(gè)基本的Python標(biāo)準(zhǔn)庫?
3、掌握不少于2 個(gè)Python 第三方庫,掌握獲取并安裝第三方庫的方法?
4、能夠閱讀和分析Python 程序?
5、熟練使用IDLE 開發(fā)環(huán)境,能夠?qū)⒛_本程序轉(zhuǎn)變?yōu)榭蓤?zhí)行程序?
6、了解Python 計(jì)算生態(tài)在以下方面(不限于)的主要第三方庫名稱:網(wǎng)絡(luò)爬蟲?數(shù)據(jù)分析?數(shù)
據(jù)可視化?機(jī)器學(xué)習(xí)?Web 開發(fā)等?
擴(kuò)展資料:
考試內(nèi)容
一?Python 語言基本語法元素
1、程序的基本語法元素:程序的格式框架?縮進(jìn)?注釋?變量?命名?保留字?數(shù)據(jù)類型?賦值
語句?引用?
2、基本輸入輸出函數(shù):input()?eval()?print()?
3、源程序的書寫風(fēng)格?
4、Python語言的特點(diǎn)?
二?基本數(shù)據(jù)類型
1、數(shù)字類型:整數(shù)類型?浮點(diǎn)數(shù)類型和復(fù)數(shù)類型?
2、數(shù)字類型的運(yùn)算:數(shù)值運(yùn)算操作符?數(shù)值運(yùn)算函數(shù)?
3、字符串類型及格式化:索引?切片?基本的format()格式化方法?
4、字符串類型的操作:字符串操作符?處理函數(shù)和處理方法?
5、類型判斷和類型間轉(zhuǎn)換?
三?程序的控制結(jié)構(gòu)
1、程序的三種控制結(jié)構(gòu)?
2、程序的分支結(jié)構(gòu):單分支結(jié)構(gòu)?二分支結(jié)構(gòu)?多分支結(jié)構(gòu)?
3、程序的循環(huán)結(jié)構(gòu):遍歷循環(huán)?無限循環(huán)?break 和continue循環(huán)控制?
4、程序的異常處理:try-except?
作者:曹操
鏈接:
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
一、 Python 語言基本語法元素
1.程序的基本語法元素:程序的格式框架、縮進(jìn)、注釋、變量、命名、保留字、數(shù)據(jù)類型、賦值 語句、引用。
2.基本輸入輸出函數(shù):input()、eval()、print()。
3.源程序的書寫風(fēng)格。
4.Python 語言的特點(diǎn)。
二、 基本數(shù)據(jù)類型
1. 數(shù)字類型:整數(shù)類型、浮點(diǎn)數(shù)類型和復(fù)數(shù)類型。
2. 數(shù)字類型的運(yùn)算:數(shù)值運(yùn)算操作符、數(shù)值運(yùn)算函數(shù)。
3. 字符串類型及格式化:索引、切片、基本的 format()格式化方法。
4. 字符串類型的操作:字符串操作符、處理函數(shù)和處理方法。
5. 類型判斷和類型間轉(zhuǎn)換。
三、 程序的控制結(jié)構(gòu)
1. 程序的三種控制結(jié)構(gòu)。
2. 程序的分支結(jié)構(gòu):單分支結(jié)構(gòu)、二分支結(jié)構(gòu)、多分支結(jié)構(gòu)。
3. 程序的循環(huán)結(jié)構(gòu):遍歷循環(huán)、無限循環(huán)、break 和 continue 循環(huán)控制。
4. 程序的異常處理:try-except。
四、 函數(shù)和代碼復(fù)用
1. 函數(shù)的定義和使用。
2. 函數(shù)的參數(shù)傳遞:可選參數(shù)傳遞、參數(shù)名稱傳遞、函數(shù)的返回值。
3. 變量的作用域:局部變量和全局變量。
五、 組合數(shù)據(jù)類型
1. 組合數(shù)據(jù)類型的基本概念。
2. 列表類型:定義、索引、切片。
3. 列表類型的操作:列表的操作函數(shù)、列表的操作方法。
4. 字典類型:定義、索引。
5. 字典類型的操作:字典的操作函數(shù)、字典的操作方法。
六、 文件和數(shù)據(jù)格式化
1. 文件的使用:文件打開、讀寫和關(guān)閉。
2. 數(shù)據(jù)組織的維度:一維數(shù)據(jù)和二維數(shù)據(jù)。
3. 一維數(shù)據(jù)的處理:表示、存儲(chǔ)和處理。
4. 二維數(shù)據(jù)的處理:表示、存儲(chǔ)和處理。
5. 采用 CSV 格式對(duì)一二維數(shù)據(jù)文件的讀寫。
當(dāng)前名稱:數(shù)值運(yùn)算函數(shù)python,數(shù)值運(yùn)算算法
鏈接分享:http://chinadenli.net/article12/dsgdogc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、企業(yè)網(wǎng)站制作、網(wǎng)站策劃、外貿(mào)建站、搜索引擎優(yōu)化、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)