NumPy進(jìn)行統(tǒng)計分析
1 讀/寫文件
NumPy文件讀寫主要有二進(jìn)制的文件讀寫和文件列表形式的數(shù)據(jù)讀寫兩種形式
1、二進(jìn)制的文件讀寫
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ù)可以將多個數(shù)組保存到一個文件中。 np.savez(‘…/tmp/savez_arr’,arr1,arr2) 存儲時可以省略擴(kuò)展名,但讀取時不能省略擴(kuò)展名。
# 利用NumPy進(jìn)行統(tǒng)計分析
# 2.3.1讀寫文件
# 1、二進(jìn)制數(shù)據(jù)存儲
# 一個數(shù)組存儲,用save()方法,后綴是.npy
# 存儲時可以省略擴(kuò)展名,但是讀取時不能省略。
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、多個數(shù)組存儲,使用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ù)組寫到某種分隔符隔開的文本文件中。 np.savetxt(“…/tmp/arr.txt”, arr, fmt=“%d”, delimiter=“,”) loadtxt函數(shù)執(zhí)行的是把文件加載到一個二維數(shù)組中。 np.loadtxt(“…/tmp/arr.txt”,delimiter=“,”) genfromtxt函數(shù)面向的是結(jié)構(gòu)化數(shù)組和缺失數(shù)據(jù)。 np.genfromtxt(“…/tmp/arr.txt”, delimiter = “,”)
# 3、文件存儲與讀寫
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)行簡單統(tǒng)計分析
1、排序
直接排序 sort函數(shù)是最常用的排序方法:arr.sort() sort函數(shù)也可以指定一個axis參數(shù),使得sort函數(shù)可以沿著指定軸對數(shù)據(jù)集進(jìn)行排序。axis=1為沿橫軸排序; axis=0為沿縱軸排序。 間接排序 argsort函數(shù)返回值為重新排序值的下標(biāo)。 arr.argsort() lexsort函數(shù)返回值是按照最后一個傳入數(shù)據(jù)排序的。 np.lexsort((a,b,c))
# 2.3.2 使用函數(shù)進(jìn)行簡單的統(tǒng)計分析 # 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()只接收一個參數(shù),即(a,b,c) # 多個鍵值排序時是按照最后一個傳入數(shù)據(jù)計算的 print(list(zip(a[d], b[d], c[d])))

2、去重與重復(fù)數(shù)據(jù)
去重: 通過unique函數(shù)可以找出數(shù)組中的唯一值并返回已排序的結(jié)果。 重復(fù): np.tile(A,reps) tile函數(shù)主要有兩個參數(shù),參數(shù)“A”指定重復(fù)的數(shù)組,參數(shù)“reps”指定重復(fù)的次數(shù)。 numpy.repeat(a, repeats, axis=None) repeat函數(shù)主要有三個參數(shù),參數(shù)“a”是需要重復(fù)的數(shù)組元素,參數(shù)“repeats”是重復(fù)次數(shù),參數(shù)“axis”指定沿著哪個軸進(jìn)行重復(fù),axis = 0表示按行進(jìn)行元素重復(fù);axis = 1表示按列進(jìn)行元素重復(fù)。 這兩個函數(shù)的主要區(qū)別在于,tile函數(shù)是對數(shù)組進(jìn)行重復(fù)操作,repeat函數(shù)是對數(shù)組中的每個元素進(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ù)實現(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)計函數(shù)
當(dāng)axis=0時,表示沿著縱軸計算。當(dāng)axis=1時,表示沿著橫軸計算。默認(rèn)時計算一個總值。

# 3、常用的統(tǒng)計函數(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)) # 累計和 print(np.cumprod(arr)) # 累計積

到此這篇關(guān)于NumPy進(jìn)行統(tǒng)計分析的文章就介紹到這了,更多相關(guān)NumPy 統(tǒng)計分析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
開源軟件包和環(huán)境管理系統(tǒng)Anaconda的安裝使用
Anaconda是一個用于科學(xué)計算的Python發(fā)行版,支持 Linux, Mac, Windows系統(tǒng),提供了包管理與環(huán)境管理的功能,可以很方便地解決多版本python并存、切換以及各種第三方包安裝問題。2017-09-09
Python中raise用法簡單實例(超級詳細(xì),看了無師自通)
python中raise語句用于手動觸發(fā)異常,通過raise語句可以在代碼中顯式地引發(fā)異常,從而使程序進(jìn)入異常處理流程,下面這篇文章主要給大家介紹了關(guān)于Python中raise用法的相關(guān)資料,需要的朋友可以參考下2024-03-03
python如何使用socketserver模塊實現(xiàn)并發(fā)聊天
這篇文章主要介紹了python如何使用socketserver模塊實現(xiàn)并發(fā)聊天,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12
一文教會你用Python實現(xiàn)pdf轉(zhuǎn)word
python實現(xiàn)pdf轉(zhuǎn)word,支持中英文轉(zhuǎn)換,轉(zhuǎn)換精度高,可以達(dá)到使用效果,下面這篇文章主要給大家介紹了關(guān)于用Python實現(xiàn)pdf轉(zhuǎn)word的相關(guān)資料,需要的朋友可以參考下2023-01-01
深入講解Python中面向?qū)ο缶幊痰南嚓P(guān)知識
這篇文章主要介紹了深入講解Python中面向?qū)ο缶幊痰南嚓P(guān)知識,是Python入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-05-05

