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è)置隨機種子 arr = np.random.randint(1, 10, size=10) print(arr) arr.sort # 直接排序 print(arr) # 二維數(shù)組 np.random.seed(0) #設(shè)置隨機種子 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è)置隨機種子 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)文章
使用Python和OpenCV檢測圖像中的物體并將物體裁剪下來
這篇文章主要介紹了使用Python和OpenCV檢測圖像中的物體并將物體裁剪下來,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10超詳細(xì)注釋之OpenCV實現(xiàn)視頻實時人臉模糊和人臉馬賽克
這篇文章主要介紹了OpenCV實現(xiàn)視頻實時人臉模糊和人臉馬賽克,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09詳解如何使用Python實現(xiàn)復(fù)制粘貼的功能
pandas?里面有一個?pd.read_clipboard?函數(shù),可以根據(jù)你復(fù)制的內(nèi)容生成DataFrame。本文就利用這個函數(shù)實現(xiàn)復(fù)制粘貼的功能,感興趣的可以了解一下2023-01-01