上一篇介紹的**通用計算**是關於多個`numpy`數組的計算, 本篇介紹的**聚合計算**一般是針對單個數據集的各種統計結果,同樣,使用**聚合函數**,也可以避免繁瑣的迴圈語句的編寫。 # 元素的和 數組中的元素求和也就是合計值。 ## 調用方式 **聚合計算**有兩種調用方式,一種是面向對象的 ...
上一篇介紹的通用計算是關於多個numpy
數組的計算,
本篇介紹的聚合計算一般是針對單個數據集的各種統計結果,同樣,使用聚合函數,也可以避免繁瑣的迴圈語句的編寫。
元素的和
數組中的元素求和也就是合計值。
調用方式
聚合計算有兩種調用方式,一種是面向對象的方式,作為numpy
數組對象的方法來調用:
import numpy as np
arr = np.random.randint(1, 10, (3, 3))
print(arr)
#運行結果
[[8 3 4]
[4 4 1]
[6 6 3]]
arr.sum()
#運行結果
39
另一種是函數式調用的方式:
import numpy as np
arr = np.random.randint(1, 10, (3, 3))
print(arr)
#運行結果
[[8 3 4]
[4 4 1]
[6 6 3]]
np.sum(arr)
#運行結果
39
下麵演示各種聚合計算的方法時,都採用函數式調用的方式,不再一一贅述了。
整體統計
整體統計就是統計數組所有值的和。
arr = np.random.randint(1, 10, (3, 3))
print(arr)
#運行結果
[[6 3 1]
[1 9 2]
[1 2 5]]
np.sum(arr)
#運行結果:30
按維度統計
比如上面的二維數組,按維度統計就是按行或者列來統計,而不是把所有值加在一起。
arr = np.random.randint(1, 10, (3, 3))
print(arr)
#運行結果
[[6 3 1]
[1 9 2]
[1 2 5]]
#統計每列的合計值
np.sum(arr, axis=0)
#運行結果:array([ 8, 14, 8])
#統計每行的合計值
np.sum(arr, axis=1)
#運行結果:array([10, 12, 8])
元素的積
元素的積的聚合統計就是各個元素相乘的結果。
對應的函數是:np.prod
整體統計
arr = np.random.randint(1, 10, (3, 3))
print(arr)
#運行結果
[[6 3 1]
[1 9 2]
[1 2 5]]
np.prod(arr)
#運行結果:3240
按維度統計
arr = np.random.randint(1, 10, (3, 3))
print(arr)
#運行結果
[[6 3 1]
[1 9 2]
[1 2 5]]
#統計每列的聚合值
np.prod(arr, axis=0)
#運行結果:array([ 6, 54, 10])
#統計每行的聚合值
np.prod(arr, axis=1)
#運行結果:array([18, 18, 10])
元素的平均值和中位數
平均值對應的函數是:np.mean
,中位數對應的函數是:np.median
。
整體統計
arr = np.random.randint(1, 10, (3, 3))
print(arr)
#運行結果
[[6 3 1]
[1 9 2]
[1 2 5]]
#平均值
np.mean(arr)
#運行結果:3.33333333
#中位數
np.median(arr)
#運行結果:2.0
按維度統計
arr = np.random.randint(1, 10, (3, 3))
print(arr)
#運行結果
[[6 3 1]
[1 9 2]
[1 2 5]]
#按列統計平均值
np.mean(arr, axis=0)
#運行結果:array([2.66666667, 4.66666667, 2.66666667])
#按行統計平均值
np.mean(arr, axis=1)
#運行結果:array([3.33333333, 4. , 2.66666667])
#按列統計中位數
np.median(arr, axis=0)
#運行結果:array([1., 3., 2.])
#按行統計中位數
np.median(arr, axis=1)
#運行結果:array([3., 2., 2.])
元素的標準差和方差
標準差對應的函數是:np.std
,方差對應的函數是:np.var
。
整體統計
arr = np.random.randint(1, 10, (3, 3))
print(arr)
#運行結果
[[6 3 1]
[1 9 2]
[1 2 5]]
#標準差
np.std(arr)
#運行結果:2.6246692913372702
#方差
np.var(arr)
#運行結果:6.888888888888889
按維度統計
arr = np.random.randint(1, 10, (3, 3))
print(arr)
#運行結果
[[6 3 1]
[1 9 2]
[1 2 5]]
#按列統計標準差
np.std(arr, axis=0)
#運行結果:array([2.3570226 , 3.09120617, 1.69967317])
#按行統計標準差
np.std(arr, axis=1)
#運行結果:array([2.05480467, 3.55902608, 1.69967317])
#按列統計方差
np.var(arr, axis=0)
#運行結果:array([5.55555556, 9.55555556, 2.88888889])
#按行統計方差
np.var(arr, axis=1)
#運行結果:array([ 4.22222222, 12.66666667, 2.88888889])
最大值和最小值
最大值對應的函數是:np.max
,最小值對應的函數是:np.min
。
整體統計
arr = np.random.randint(1, 10, (3, 3))
print(arr)
#運行結果
[[6 3 1]
[1 9 2]
[1 2 5]]
#最大值
np.max(arr)
#運行結果:9
#最小值
np.min(arr)
#運行結果:1
按維度統計
arr = np.random.randint(1, 10, (3, 3))
print(arr)
#運行結果
[[6 3 1]
[1 9 2]
[1 2 5]]
#按列統計最大值
np.max(arr, axis=0)
#運行結果:array([6, 9, 5])
#按行統計最大值
np.max(arr, axis=1)
#運行結果:array([6, 9, 5])
#按列統計最小值
np.min(arr, axis=0)
#運行結果:array([1, 2, 1])
#按行統計最小值
np.min(arr, axis=1)
#運行結果:array([1, 1, 1])
總結回顧
本篇介紹了最常用的聚合計算函數,聚合計算通常用於對數據進行處理和分析,以及實現高級的數據分析演算法。
除了上面介紹的聚合計算函數,還有:
- cumsum():計算數組中所有元素的累積和。
- cumprod():計算數組中所有元素的累積乘積。
- argmin():計算數組中最小值的下標。
- argmax():計算數組中最大值的下標。
- ... ...
具體請參考官方文檔。