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