詳解如何使用numpy提高Python數(shù)據(jù)分析效率
NumPy是Python語(yǔ)言的一個(gè)第三方庫(kù),其支持大量高維度數(shù)組與矩陣運(yùn)算。
作為python科學(xué)計(jì)算領(lǐng)域的三劍客之一,numpy在數(shù)據(jù)分析處理方面有著獨(dú)特的魅力!
numpy模塊的出現(xiàn)更多的是在數(shù)組處理的操作上面,并且支持和python常用的數(shù)據(jù)結(jié)構(gòu)list之間的相互轉(zhuǎn)換操作。
1、數(shù)組初始化
數(shù)組初始化即創(chuàng)建數(shù)組,numpy提供了相當(dāng)多的創(chuàng)建不同結(jié)構(gòu)的數(shù)組的方式,合理的利用這些數(shù)據(jù)初始化的操作能夠讓我們的開(kāi)發(fā)事半功倍。
numpy目前最多可以支持三維數(shù)組的創(chuàng)建,下面我們直接通過(guò)實(shí)例來(lái)說(shuō)明其使用技巧。
#?導(dǎo)入數(shù)據(jù)處理的numpy模塊 import?numpy?as?np #?通過(guò)python列表list創(chuàng)建numpy一維數(shù)組 array_?=?np.array(['a',?'b',?'c']) #?控制臺(tái)打印一維數(shù)組 print(array_) #?['a'?'b'?'c'] #?通過(guò)python列表list創(chuàng)建numpy二維數(shù)組 array_?=?np.array([('a',?'b',?'c'),?(1,?2,?3)]) #?控制臺(tái)打印二維數(shù)組 print(array_) #?[['a'?'b'?'c'] #??['1'?'2'?'3']] #?創(chuàng)建四行五列的二維數(shù)組,并填充值為1,可通過(guò)full函數(shù)創(chuàng)建任意的二維數(shù)組 array_?=?np.full((5,?6),?1) #?控制臺(tái)打印任意的行、列的二維數(shù)組 print(array_) #?[[1?1?1?1?1?1] #??[1?1?1?1?1?1] #??[1?1?1?1?1?1] #??[1?1?1?1?1?1] #??[1?1?1?1?1?1]] #?創(chuàng)建任意行、列的二維數(shù)組,并且填充值為隨機(jī)數(shù) array_?=?np.random.rand(3,?4) #?控制臺(tái)打印隨機(jī)數(shù)的二維數(shù)組 print(array_) #?[[0.94372258?0.66743021?0.47003813?0.44912263] #??[0.71435389?0.47909147?0.52322176?0.32445311] #??[0.9843635??0.14054129?0.10611754?0.45922036]]
上述便是常用的numpy模塊關(guān)于數(shù)組的初始化方式,靈活應(yīng)用幾種array數(shù)組的創(chuàng)建方式能夠解決在業(yè)務(wù)開(kāi)發(fā)過(guò)程中的很多問(wèn)題。
2、數(shù)組元素計(jì)算
除了numpy的數(shù)組的初始化方式,關(guān)于numpy數(shù)據(jù)元素的計(jì)算是開(kāi)發(fā)過(guò)程中常常會(huì)使用的計(jì)算方式。
numpy模塊提供的很多計(jì)算函數(shù)不僅簡(jiǎn)便,而且執(zhí)行效率更高。有時(shí)候比我們自己寫(xiě)的函數(shù)運(yùn)行速度甚至高出幾倍不止。
下面就來(lái)看看在日常的數(shù)據(jù)處理過(guò)程中常用的幾種數(shù)據(jù)處理函數(shù)的使用過(guò)程。
#?array函數(shù)初始化多維度數(shù)組 array_?=?np.array([(1,?2), ???????????????????(3,?4),?(5,?6)]) #?sum函數(shù)計(jì)算多維度數(shù)組每一列的和 sum_?=?np.sum(array_) #?打印數(shù)組計(jì)算結(jié)果 print(sum_) #?21 #?mean函數(shù)計(jì)算多維度數(shù)組的平均值 mean_?=?np.mean(array_) #?打印數(shù)組計(jì)算結(jié)果 print(mean_) #?3.5 #?tile函數(shù)使元數(shù)組變成多行多列的形式,相當(dāng)于復(fù)制的效果 tile_?=?np.tile(array_,?(3,?4)) #?打印計(jì)算結(jié)果 print(tile_) #?[[1?2?1?2?1?2?1?2] #??[3?4?3?4?3?4?3?4] #??[5?6?5?6?5?6?5?6] #??[1?2?1?2?1?2?1?2] #??[3?4?3?4?3?4?3?4] #??[5?6?5?6?5?6?5?6] #??[1?2?1?2?1?2?1?2] #??[3?4?3?4?3?4?3?4] #??[5?6?5?6?5?6?5?6]] #?初始化二維數(shù)組 array_?=?np.array([[3,?6,?4,?11], ???????????????????[5,?10,?1,?3]]) #?argsort函數(shù)完成對(duì)數(shù)組的排序操作 argsort_?=?array_.argsort() #?打印計(jì)算結(jié)果 print(argsort_) #?[[0?2?1?3] #??[2?3?0?1]] #?argsort函數(shù)完成對(duì)數(shù)組列值的排序操作 argsort_?=?array_.argsort(axis=0) #?打印計(jì)算結(jié)果 print(argsort_) #?[[0?0?1?1] #??[1?1?0?0]]
注意:上述的排序結(jié)果返回的是源數(shù)組的排序后的下標(biāo)。
除了上述的numpy數(shù)組計(jì)算的基本操作,最常用的就是下面的numpy數(shù)組的加、減、乘、除計(jì)算。
通過(guò)數(shù)組的加、減、乘、除計(jì)算能夠滿(mǎn)足我們?cè)跇I(yè)務(wù)開(kāi)發(fā)過(guò)程中的絕大多數(shù)的計(jì)算操作。
#?初始化兩個(gè)數(shù)組a_、b_分別用于下面的邏輯計(jì)算 a_?=?np.array([1,?2,?3,?4]) b_?=?np.array([5,?6,?7,?8]) #?計(jì)算兩個(gè)一維數(shù)組的和 result_?=?a_?+?b_ #?打印計(jì)算結(jié)果 print(result_) #?[?6??8?10?12] #?計(jì)算兩個(gè)一維數(shù)組的差 result_?=?a_?-?b_ #?打印計(jì)算結(jié)果 print(result_) #?[-4?-4?-4?-4] #?計(jì)算兩個(gè)一維數(shù)組的乘積 result_?=?a_?*?b_ #?打印計(jì)算結(jié)果 print(result_) #?[?5?12?21?32] #?計(jì)算兩個(gè)一維數(shù)組的商 result_?=?a_?/?b_ #?打印計(jì)算結(jié)果 print(result_) #?[0.2????????0.33333333?0.42857143?0.5???????]
除了上述的一維數(shù)組的相關(guān)計(jì)算,同時(shí)numpy還可支持二維矩陣的邏輯計(jì)算。
3、數(shù)組元素提取
數(shù)組元素的提取其實(shí)主要還是對(duì)數(shù)組的下標(biāo)索引的相關(guān)操作。
numpy提供的多維數(shù)組同樣能夠使用對(duì)應(yīng)的索引位置提取出相應(yīng)的值。
#?初始化二維數(shù)組 array_?=?np.array([[3,?6,?4,?11], ???????????????????[5,?10,?1,?3]]) #?提取第二行、第四列的值 value_?=?array_[1,?3] #?打印計(jì)算結(jié)果 print(value_) #?3 #?提取出倒數(shù)第二行、第三列到第四列之間的二維數(shù)組 value_?=?array_[-2:,?2:3] #?打印計(jì)算結(jié)果 print(value_) #?[[4] #??[1]] #?獲取數(shù)組中大于、小于、等于某個(gè)數(shù)值的結(jié)果 result_?=?array_?>=?10 #?打印計(jì)算結(jié)果 print(result_) #?[[False?False?False??True] #??[False??True?False?False]] #?返回的數(shù)組中,所在位置為T(mén)rue的數(shù)值就是符合邏輯計(jì)算的數(shù)值。
多維數(shù)組的索引的數(shù)值提取操作,能夠輔助我們完成更加復(fù)雜的數(shù)據(jù)處理操作。
到此這篇關(guān)于詳解如何使用numpy提高Python數(shù)據(jù)分析效率的文章就介紹到這了,更多相關(guān)Python numpy提高數(shù)據(jù)分析效率內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python基于正則表達(dá)式實(shí)現(xiàn)檢查文件內(nèi)容的方法【文件檢索】
這篇文章主要介紹了Python基于正則表達(dá)式實(shí)現(xiàn)檢查文件內(nèi)容的方法,可實(shí)現(xiàn)針對(duì)文件中import強(qiáng)制依賴(lài)的文件關(guān)系檢索,涉及Python文件目錄的遍歷及正則匹配相關(guān)操作技巧,需要的朋友可以參考下2017-08-08Matplotlib之解決plt.savefig()保存多張圖片有重疊的問(wèn)題
這篇文章主要介紹了Matplotlib之解決plt.savefig()保存多張圖片有重疊的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,2023-09-09python類(lèi):class創(chuàng)建、數(shù)據(jù)方法屬性及訪(fǎng)問(wèn)控制詳解
下面小編就為大家?guī)?lái)一篇python類(lèi):class創(chuàng)建、數(shù)據(jù)方法屬性及訪(fǎng)問(wèn)控制詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07Python+Tkinter制作在線(xiàn)個(gè)性簽名工具
這篇文章主要為大家分享如何利用Python中的Tkinter庫(kù)制作一個(gè)簡(jiǎn)易的在線(xiàn)個(gè)性簽名生成工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-03-03Python存儲(chǔ)json數(shù)據(jù)發(fā)生亂碼的解決方法
當(dāng)使用json.dump()把python對(duì)象轉(zhuǎn)換為json后存儲(chǔ)到文件中時(shí),文件可能會(huì)出現(xiàn)亂碼的問(wèn)題,本篇文章可以幫助您解決亂碼問(wèn)題,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09python解析xml文件方式(解析、更新、寫(xiě)入)
這篇文章主要介紹了python解析xml文件方式(解析、更新、寫(xiě)入),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Python SVM(支持向量機(jī))實(shí)現(xiàn)方法完整示例
這篇文章主要介紹了Python SVM(支持向量機(jī))實(shí)現(xiàn)方法,結(jié)合完整實(shí)例形式分析了基于Python實(shí)現(xiàn)向量機(jī)SVM算法的具體步驟與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-06-06