詳解如何使用numpy提高Python數(shù)據(jù)分析效率
NumPy是Python語言的一個(gè)第三方庫,其支持大量高維度數(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ù)初始化的操作能夠讓我們的開發(fā)事半功倍。
numpy目前最多可以支持三維數(shù)組的創(chuàng)建,下面我們直接通過實(shí)例來說明其使用技巧。
#?導(dǎo)入數(shù)據(jù)處理的numpy模塊
import?numpy?as?np
#?通過python列表list創(chuàng)建numpy一維數(shù)組
array_?=?np.array(['a',?'b',?'c'])
#?控制臺(tái)打印一維數(shù)組
print(array_)
#?['a'?'b'?'c']
#?通過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,可通過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ù)開發(fā)過程中的很多問題。
2、數(shù)組元素計(jì)算
除了numpy的數(shù)組的初始化方式,關(guān)于numpy數(shù)據(jù)元素的計(jì)算是開發(fā)過程中常常會(huì)使用的計(jì)算方式。
numpy模塊提供的很多計(jì)算函數(shù)不僅簡便,而且執(zhí)行效率更高。有時(shí)候比我們自己寫的函數(shù)運(yùn)行速度甚至高出幾倍不止。
下面就來看看在日常的數(shù)據(jù)處理過程中常用的幾種數(shù)據(jù)處理函數(shù)的使用過程。
#?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ì)算。
通過數(shù)組的加、減、乘、除計(jì)算能夠滿足我們?cè)跇I(yè)務(wù)開發(fā)過程中的絕大多數(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ù)組中,所在位置為True的數(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多進(jìn)程實(shí)現(xiàn)數(shù)據(jù)共享的示例代碼
本文介紹了Python中多進(jìn)程實(shí)現(xiàn)數(shù)據(jù)共享的方法,包括使用multiprocessing模塊和manager模塊這兩種方法,具有一定的參考價(jià)值,感興趣的可以了解一下2025-01-01
Python利用matplotlib繪制散點(diǎn)圖的新手教程
這篇文章主要給大家介紹了關(guān)于Python利用matplotlib繪制散點(diǎn)圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Python?中?Pandas?文件操作和讀取?CSV?參數(shù)詳解
CSV?又稱逗號(hào)分隔值文件,是一種簡單的文件格式,以特定的結(jié)構(gòu)來排列表格數(shù)據(jù),這篇文章主要介紹了Python?之?Pandas?文件操作和讀取?CSV?參數(shù)詳解,需要的朋友可以參考下2023-03-03

