用python做數(shù)據(jù)分析2|numpy庫下進(jìn)行數(shù)組計(jì)算的10點(diǎn)tips

今天是4.28號(hào)。

天氣又開始變陰搁拙,雨持續(xù)了一整個(gè)月秒梳。

之前學(xué)習(xí)了用python寫爬蟲和python與mongodb數(shù)據(jù)庫、文件之間的簡(jiǎn)單操作箕速。想想自己還是想用python去做數(shù)據(jù)分析酪碘,或者能夠在證券量化工作中用到相應(yīng)的知識(shí),所以接下來會(huì)主要學(xué)習(xí)數(shù)據(jù)分析相關(guān)的庫numpy,pandas,matplotlib等盐茎,至于機(jī)器學(xué)習(xí)的庫scikit-learn則等掌握了前三個(gè)庫的使用后再根據(jù)需要去學(xué)習(xí)兴垦。


import numpy as np

可以認(rèn)為numpy就是一個(gè)多維的列表(list):

例如
a=[[1,2,3],
   [3,4,5],]
    a.shape能夠得到a是nxn維數(shù)組;
    a.dtype能夠得到數(shù)組中的元素類型是什么字柠;同時(shí)注意narray中所有元素的類型必須是一致的探越。
取數(shù)組a中特定位置的值也是用索引,一維直接用a[x]窑业,二維用a[x,y]即第x行第y列的數(shù)據(jù)钦幔。

(1) arange函數(shù)在numpy中用于創(chuàng)建等差數(shù)組,使用頻率非常高数冬。arange非常類似range函數(shù)节槐,在沒有學(xué)習(xí)numpy時(shí)在for循環(huán)中搀庶,幾乎都用到了range拐纱,二者的區(qū)別僅僅在于是arange返回的是一個(gè)arr數(shù)組,而range返回的是list哥倔。

range()函數(shù)的用法:
   range(1,5) #代表從1到5(不包含5)
  [1, 2, 3, 4]
   range(1,5,2) #代表從1到5秸架,間隔2(不包含5)
  [1, 3]
   range(5) #代表從0到5(不包含5)
  [0, 1, 2, 3, 4]

(2) 花式索引,即利用整數(shù)數(shù)組進(jìn)行索引咆蒿。

例如
arr=[[1,1,2,3],
     [1,4,5,6],
     [3,2,5,0],
     [2,3,1,9]]
那么arr[[1,3]]得到的結(jié)果為arr([[1,4,5,6],[2,3,1,9]])

(3) 進(jìn)行矩陣計(jì)算時(shí)常用到轉(zhuǎn)置(T)和內(nèi)積:
arr.T东抹,可以直接表示轉(zhuǎn)置
np.dot()函數(shù)可以計(jì)算內(nèi)積蚂子,如np.dot(a,a.T)

(4) arr是一個(gè)數(shù)組,有一些函數(shù)可以快速對(duì)數(shù)組中所有的元素進(jìn)行相應(yīng)的計(jì)算操作:
用法例子為:np.abs(arr),np.sqrt(arr)

1.PNG

對(duì)兩個(gè)數(shù)組的操作為:add(x,y),multiply(x,y)等缭黔,執(zhí)行方法是均是對(duì)應(yīng)位置元素進(jìn)行計(jì)算食茎。
2.png

(5)條件方法 np.where(cond,x,y)三元表達(dá)式的使用,其中cond表示條件;x馏谨、y可以是單獨(dú)的數(shù)字别渔,可以是數(shù)組。在數(shù)據(jù)分析中惧互,它常用于根據(jù)一個(gè)數(shù)組產(chǎn)生新的數(shù)組哎媚。

例如假設(shè)現(xiàn)在有兩個(gè)數(shù)值數(shù)組和一個(gè)布爾型值數(shù)組:
    xarr=np.array([2,2,3,5,6])
    yarr=np.array([5,6,9,0,1])
    con=np.array([False,True,True,True,False])  
現(xiàn)在想根據(jù)con的值選取xarr、yarr中的值喊儡,當(dāng)con中值為True時(shí)選xarr的值拨与,否則選y的值。
用一般的方法為:
    result=[(x if c else y) for x,y,c in zip(xarr,yarr,con)]

使用np.where()則能極大提高計(jì)算效率艾猜,用法為:
    result=np.where(con,xarr,yarr)

**(6) 數(shù)學(xué)和統(tǒng)計(jì)方法 **
可通過sum,mean,std等方法對(duì)對(duì)整個(gè)數(shù)組或某個(gè)軸上的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算买喧,通常叫做約簡(jiǎn)(reduction)。

對(duì)于axis不懂的可以直接這樣理解箩朴,axis=0或沒有即默認(rèn)為零岗喉,就豎著看;aixs=1就橫著看炸庞。

若x為一個(gè)數(shù)組使用方法為:
x.sum(), x.mean()
x.sum(axis=0或1)钱床,其中axis=0 表示按行將每一列的向量相加,axis=1表示按列將每一行的向量相加埠居。

sum也可以用來對(duì)布爾型數(shù)組中的True值計(jì)數(shù):
例如:arr=randn(100)
     (arr>0).sum()
3.1.PNG
3.2.png

(7) sort()排序
若x為一個(gè)數(shù)組查牌,x.sort()默認(rèn)將數(shù)組x中的元素從小到大排序。若x是多維數(shù)組滥壕,x.sort()會(huì)默認(rèn)按從小到大對(duì)每一列進(jìn)行排序纸颜;x.sort(1)則會(huì)從小到大對(duì)每一行進(jìn)行排序。

(8) 數(shù)組的集合運(yùn)算
np.unique()與python中set()的功能類似绎橘。
例若a=np.array([1,2,3,2,3,4,6])
則np.unique(a)結(jié)果為array([1,2,3,4,6])胁孙,np,unique()在去除重復(fù)元素的同時(shí)將元素從小到大進(jìn)行了排序。

其他集合運(yùn)算如下称鳞,注意集合運(yùn)算的結(jié)果均是數(shù)組

4.png

(9) 線性代數(shù)的相關(guān)計(jì)算
這里暫時(shí)不作介紹涮较,后面有需要用到時(shí)具體學(xué)習(xí)并補(bǔ)充進(jìn)來

(10) 隨機(jī)數(shù)生成
numpy.random模塊對(duì)python中內(nèi)置的random進(jìn)行了補(bǔ)充。使用隨機(jī)數(shù)生成函數(shù)時(shí)一般要加size=()的參數(shù)冈止。

例如使用的方法為:

a). numpy.random.normal(size=(4,4))可以得到4x4維服從正太分布的數(shù)組狂票,
其中size是normal()函數(shù)的一個(gè)參數(shù),random的其他函數(shù)也有該參數(shù)熙暴,若該參數(shù)缺失闺属,則默認(rèn)只生成一個(gè)值.

b). randint(low,high,size=xx)
    表示從low到high范圍內(nèi)隨機(jī)生成size個(gè)整數(shù)慌盯,且high值取不到。
注意:當(dāng)high缺失或聲明high=None時(shí)掂器,將唯一的一個(gè)數(shù)作為上限亚皂。
    例如:a=np.random.randint(3,size=10)和a=np.random.randint(3,high=None,size=(2,3))
二者表達(dá)的意思是一樣的。

c). random.randn(n国瓮,n)可以生成nxn維的服從正太分布的隨機(jī)數(shù)據(jù)數(shù)組孕讳。

部分numpy.random函數(shù)如下:


5.png

最后再說一下reshape()函數(shù)可以把一維數(shù)組轉(zhuǎn)化為自己想要的多維數(shù)組,如下:
np.random.randint(8,size=9).reshape(3,3)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末巍膘,一起剝皮案震驚了整個(gè)濱河市厂财,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌峡懈,老刑警劉巖璃饱,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異肪康,居然都是意外死亡荚恶,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門磷支,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谒撼,“玉大人谓形,你說我怎么就攤上這事凸舵。” “怎么了余耽?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵善榛,是天一觀的道長(zhǎng)辩蛋。 經(jīng)常有香客問我,道長(zhǎng)移盆,這世上最難降的妖魔是什么悼院? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮咒循,結(jié)果婚禮上据途,老公的妹妹穿的比我還像新娘。我一直安慰自己叙甸,他們只是感情好颖医,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚁署,像睡著了一般便脊。 火紅的嫁衣襯著肌膚如雪蚂四。 梳的紋絲不亂的頭發(fā)上光戈,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天哪痰,我揣著相機(jī)與錄音,去河邊找鬼久妆。 笑死晌杰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的筷弦。 我是一名探鬼主播肋演,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼烂琴!你這毒婦竟也來了爹殊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤奸绷,失蹤者是張志新(化名)和其女友劉穎梗夸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體号醉,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡反症,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了畔派。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铅碍。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖线椰,靈堂內(nèi)的尸體忽然破棺而出胞谈,到底是詐尸還是另有隱情,我是刑警寧澤憨愉,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布呜魄,位于F島的核電站,受9級(jí)特大地震影響莱衩,放射性物質(zhì)發(fā)生泄漏爵嗅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一笨蚁、第九天 我趴在偏房一處隱蔽的房頂上張望睹晒。 院中可真熱鬧,春花似錦括细、人聲如沸伪很。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锉试。三九已至,卻和暖如春览濒,著一層夾襖步出監(jiān)牢的瞬間呆盖,已是汗流浹背拖云。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留应又,地道東北人宙项。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像株扛,于是被迫代替她去往敵國(guó)和親尤筐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容