NumPy進(jìn)行統(tǒng)計(jì)分析
1 讀/寫(xiě)文件
NumPy文件讀寫(xiě)主要有二進(jìn)制的文件讀寫(xiě)和文件列表形式的數(shù)據(jù)讀寫(xiě)兩種形式
1、二進(jìn)制的文件讀寫(xiě)
save函數(shù)是以二進(jìn)制的格式保存數(shù)據(jù)。 np.save(“…/tmp/save_arr”,arr) load函數(shù)是從二進(jìn)制的文件中讀取數(shù)據(jù)。 np.load(“…/tmp/save_arr.npy”) savez函數(shù)可以將多個(gè)數(shù)組保存到一個(gè)文件中。 np.savez(‘…/tmp/savez_arr’,arr1,arr2) 存儲(chǔ)時(shí)可以省略擴(kuò)展名,但讀取時(shí)不能省略擴(kuò)展名。
# 利用NumPy進(jìn)行統(tǒng)計(jì)分析
# 2.3.1讀寫(xiě)文件
# 1、二進(jìn)制數(shù)據(jù)存儲(chǔ)
# 一個(gè)數(shù)組存儲(chǔ),用save()方法,后綴是.npy
# 存儲(chǔ)時(shí)可以省略擴(kuò)展名,但是讀取時(shí)不能省略。
import numpy as np
arr = np.arange(25).reshape(5,5)
np.save("F:/test/save_arr",arr) #保存數(shù)組
print(arr)
data1 = np.load("F:/test/save_arr.npy") # 讀取數(shù)據(jù)
print(data1)
# 2、多個(gè)數(shù)組存儲(chǔ),使用savez(),后綴是.npz
arr1 = np.array([[1,2,3],[4,5,6]])
arr2 = np.arange(0,1,0.2)
np.savez("F:/test/save_arr2",arr1,arr2) #保存數(shù)組
print(arr1)
print(arr2)
data2 = np.load("F:/test/save_arr2.npz")
print(data2['arr_0'])
print(data2['arr_1'])

2、讀取文本格式的數(shù)據(jù)
savetxt函數(shù)是將數(shù)組寫(xiě)到某種分隔符隔開(kāi)的文本文件中。 np.savetxt(“…/tmp/arr.txt”, arr, fmt=“%d”, delimiter=“,”) loadtxt函數(shù)執(zhí)行的是把文件加載到一個(gè)二維數(shù)組中。 np.loadtxt(“…/tmp/arr.txt”,delimiter=“,”) genfromtxt函數(shù)面向的是結(jié)構(gòu)化數(shù)組和缺失數(shù)據(jù)。 np.genfromtxt(“…/tmp/arr.txt”, delimiter = “,”)
# 3、文件存儲(chǔ)與讀寫(xiě)
arr = np.arange(0, 12, 1).reshape(4, -1)
print(arr)
np.savetxt("F:/test/save_arr.txt", arr, fmt="%d", delimiter=',')
data = np.loadtxt("F:/test/save_arr.txt", delimiter=',')
print(data)
# 使用genfromtxt讀取數(shù)據(jù)
data2 = np.genfromtxt("F:/test/save_arr.txt", delimiter=',')
print(data2)
2 使用數(shù)組進(jìn)行簡(jiǎn)單統(tǒng)計(jì)分析
1、排序
直接排序 sort函數(shù)是最常用的排序方法:arr.sort() sort函數(shù)也可以指定一個(gè)axis參數(shù),使得sort函數(shù)可以沿著指定軸對(duì)數(shù)據(jù)集進(jìn)行排序。axis=1為沿橫軸排序; axis=0為沿縱軸排序。 間接排序 argsort函數(shù)返回值為重新排序值的下標(biāo)。 arr.argsort() lexsort函數(shù)返回值是按照最后一個(gè)傳入數(shù)據(jù)排序的。 np.lexsort((a,b,c))
# 2.3.2 使用函數(shù)進(jìn)行簡(jiǎn)單的統(tǒng)計(jì)分析 # 1、排序 np.random.seed(0) #設(shè)置隨機(jī)種子 arr = np.random.randint(1, 10, size=10) print(arr) arr.sort # 直接排序 print(arr) # 二維數(shù)組 np.random.seed(0) #設(shè)置隨機(jī)種子 arr2 = np.random.randint(1,10, size=(3,3)) print(arr2) arr2.sort(axis=1) # axis=1沿著橫軸排序 print(arr2) arr2.sort(axis=0) # axis=0沿著縱軸排序 print(arr2) # argsort()排序 np.random.seed(0) #設(shè)置隨機(jī)種子 arr = np.random.randint(1, 10, size=6) print(arr) print(arr.argsort()) # argsort()返回的是新數(shù)據(jù)在原數(shù)據(jù)序列中的位置 # lexsort()排序 a = np.array([3,2,6,4,5]) b = np.array([50, 30, 40, 20, 10]) c = np.array([400, 300, 600, 100, 200]) d = np.lexsort((a,b,c)) # lexsort()只接收一個(gè)參數(shù),即(a,b,c) # 多個(gè)鍵值排序時(shí)是按照最后一個(gè)傳入數(shù)據(jù)計(jì)算的 print(list(zip(a[d], b[d], c[d])))

2、去重與重復(fù)數(shù)據(jù)
去重: 通過(guò)unique函數(shù)可以找出數(shù)組中的唯一值并返回已排序的結(jié)果。 重復(fù): np.tile(A,reps) tile函數(shù)主要有兩個(gè)參數(shù),參數(shù)“A”指定重復(fù)的數(shù)組,參數(shù)“reps”指定重復(fù)的次數(shù)。 numpy.repeat(a, repeats, axis=None) repeat函數(shù)主要有三個(gè)參數(shù),參數(shù)“a”是需要重復(fù)的數(shù)組元素,參數(shù)“repeats”是重復(fù)次數(shù),參數(shù)“axis”指定沿著哪個(gè)軸進(jìn)行重復(fù),axis = 0表示按行進(jìn)行元素重復(fù);axis = 1表示按列進(jìn)行元素重復(fù)。 這兩個(gè)函數(shù)的主要區(qū)別在于,tile函數(shù)是對(duì)數(shù)組進(jìn)行重復(fù)操作,repeat函數(shù)是對(duì)數(shù)組中的每個(gè)元素進(jìn)行重復(fù)操作。
# 2、去重與重復(fù)數(shù)據(jù) arr = np.array([5,2,3,5,3,2,4,3]) print(arr) arr = np.unique(arr) # 去重且排序 == sorted(set(arr)) print(arr) # 使用tile()和repeat()函數(shù)實(shí)現(xiàn)數(shù)據(jù)重復(fù) arr = np.arange(5) print(arr) print(np.tile(arr,3)) # 重復(fù)三次 print(arr.repeat(3)) # 重復(fù)三次

3、常用的統(tǒng)計(jì)函數(shù)
當(dāng)axis=0時(shí),表示沿著縱軸計(jì)算。當(dāng)axis=1時(shí),表示沿著橫軸計(jì)算。默認(rèn)時(shí)計(jì)算一個(gè)總值。

# 3、常用的統(tǒng)計(jì)函數(shù) arr = np.arange(1,13,1).reshape(3,4) print(arr) print(np.sum(arr)) # 和 print(arr.sum(axis=1)) # 橫軸的和 print(arr.sum(axis=0)) # 縱軸的和 print(np.mean(arr)) # 均值 print(arr.mean(axis=1)) # 橫軸的均值 print(arr.mean(axis=0)) # 縱軸的均值 print(np.std(arr)) # 標(biāo)準(zhǔn)差 print(np.var(arr)) # 方差 print(np.min(arr)) # 最小值 print(np.max(arr)) # 最大值 print(np.argmin(arr)) # 最小值的索引 print(np.argmax(arr)) # 最大值的索引 print(np.cumsum(arr)) # 累計(jì)和 print(np.cumprod(arr)) # 累計(jì)積

到此這篇關(guān)于NumPy進(jìn)行統(tǒng)計(jì)分析的文章就介紹到這了,更多相關(guān)NumPy 統(tǒng)計(jì)分析內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
開(kāi)源軟件包和環(huán)境管理系統(tǒng)Anaconda的安裝使用
Anaconda是一個(gè)用于科學(xué)計(jì)算的Python發(fā)行版,支持 Linux, Mac, Windows系統(tǒng),提供了包管理與環(huán)境管理的功能,可以很方便地解決多版本python并存、切換以及各種第三方包安裝問(wèn)題。2017-09-09
pytest實(shí)現(xiàn)多種調(diào)用方式
pytest是一個(gè)非常成熟的全功能的Python測(cè)試框架,本文主要介紹了pytest多種調(diào)用方式,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
Python中raise用法簡(jiǎn)單實(shí)例(超級(jí)詳細(xì),看了無(wú)師自通)
python中raise語(yǔ)句用于手動(dòng)觸發(fā)異常,通過(guò)raise語(yǔ)句可以在代碼中顯式地引發(fā)異常,從而使程序進(jìn)入異常處理流程,下面這篇文章主要給大家介紹了關(guān)于Python中raise用法的相關(guān)資料,需要的朋友可以參考下2024-03-03
Python基于回溯法子集樹(shù)模板解決選排問(wèn)題示例
這篇文章主要介紹了Python基于回溯法子集樹(shù)模板解決選排問(wèn)題,簡(jiǎn)單描述了選排問(wèn)題并結(jié)合實(shí)例形式分析了Python使用回溯法子集樹(shù)模板解決選排問(wèn)題的具體實(shí)現(xiàn)步驟與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2017-09-09
python如何使用socketserver模塊實(shí)現(xiàn)并發(fā)聊天
這篇文章主要介紹了python如何使用socketserver模塊實(shí)現(xiàn)并發(fā)聊天,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
一文教會(huì)你用Python實(shí)現(xiàn)pdf轉(zhuǎn)word
python實(shí)現(xiàn)pdf轉(zhuǎn)word,支持中英文轉(zhuǎn)換,轉(zhuǎn)換精度高,可以達(dá)到使用效果,下面這篇文章主要給大家介紹了關(guān)于用Python實(shí)現(xiàn)pdf轉(zhuǎn)word的相關(guān)資料,需要的朋友可以參考下2023-01-01
Python基于百度AI實(shí)現(xiàn)抓取表情包
本文先抓取網(wǎng)絡(luò)上的表情圖像,然后利用百度 AI 識(shí)別表情包上的說(shuō)明文字,并利用表情文字重命名文件,感興趣的小伙伴們可以參考一下2021-06-06
深入講解Python中面向?qū)ο缶幊痰南嚓P(guān)知識(shí)
這篇文章主要介紹了深入講解Python中面向?qū)ο缶幊痰南嚓P(guān)知識(shí),是Python入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05

