NumPy - 統計函式



NumPy 有許多有用的統計函式,用於從陣列中給定的元素中查詢最小值、最大值、百分位數、標準差和方差等。這些函式解釋如下:

numpy.amin() 和 numpy.amax()

這些函式返回給定陣列中沿指定軸的元素的最小值和最大值。

示例

import numpy as np 
a = np.array([[3,7,5],[8,4,3],[2,4,9]]) 

print 'Our array is:' 
print a  
print '\n'  

print 'Applying amin() function:' 
print np.amin(a,1) 
print '\n'  

print 'Applying amin() function again:' 
print np.amin(a,0) 
print '\n'  

print 'Applying amax() function:' 
print np.amax(a) 
print '\n'  

print 'Applying amax() function again:' 
print np.amax(a, axis = 0)

它將產生以下輸出:

Our array is:
[[3 7 5]
[8 4 3]
[2 4 9]]

Applying amin() function:
[3 3 2]

Applying amin() function again:
[2 4 3]

Applying amax() function:
9

Applying amax() function again:
[8 7 9]

numpy.ptp()

numpy.ptp() 函式返回沿軸的值的範圍(最大值-最小值)。

import numpy as np 
a = np.array([[3,7,5],[8,4,3],[2,4,9]]) 

print 'Our array is:' 
print a 
print '\n'  

print 'Applying ptp() function:' 
print np.ptp(a) 
print '\n'  

print 'Applying ptp() function along axis 1:' 
print np.ptp(a, axis = 1) 
print '\n'   

print 'Applying ptp() function along axis 0:'
print np.ptp(a, axis = 0) 

它將產生以下輸出:

Our array is:
[[3 7 5]
[8 4 3]
[2 4 9]]

Applying ptp() function:
7

Applying ptp() function along axis 1:
[4 5 7]

Applying ptp() function along axis 0:
[6 3 6]

numpy.percentile()

百分位數(或百分位數)是統計學中使用的一種度量,表示一組觀測值中低於給定百分比的觀測值的數值。numpy.percentile() 函式接受以下引數。

numpy.percentile(a, q, axis)

其中,

序號 引數和描述
1

a

輸入陣列

2

q

要計算的百分位數必須介於 0-100 之間

3

axis

要計算百分位數的軸

示例

import numpy as np 
a = np.array([[30,40,70],[80,20,10],[50,90,60]]) 

print 'Our array is:' 
print a 
print '\n'  

print 'Applying percentile() function:' 
print np.percentile(a,50) 
print '\n'  

print 'Applying percentile() function along axis 1:' 
print np.percentile(a,50, axis = 1) 
print '\n'  

print 'Applying percentile() function along axis 0:' 
print np.percentile(a,50, axis = 0)

它將產生以下輸出:

Our array is:
[[30 40 70]
 [80 20 10]
 [50 90 60]]

Applying percentile() function:
50.0

Applying percentile() function along axis 1:
[ 40. 20. 60.]

Applying percentile() function along axis 0:
[ 50. 40. 60.]

numpy.median()

中位數定義為將資料樣本的上半部分與下半部分分隔的值。numpy.median() 函式的使用方式如下面的程式所示。

示例

import numpy as np 
a = np.array([[30,65,70],[80,95,10],[50,90,60]]) 

print 'Our array is:' 
print a 
print '\n'  

print 'Applying median() function:' 
print np.median(a) 
print '\n'  

print 'Applying median() function along axis 0:' 
print np.median(a, axis = 0) 
print '\n'  
 
print 'Applying median() function along axis 1:' 
print np.median(a, axis = 1)

它將產生以下輸出:

Our array is:
[[30 65 70]
 [80 95 10]
 [50 90 60]]

Applying median() function:
65.0

Applying median() function along axis 0:
[ 50. 90. 60.]

Applying median() function along axis 1:
[ 65. 80. 60.]

numpy.mean()

算術平均值是沿軸的元素之和除以元素的數量。numpy.mean() 函式返回陣列中元素的算術平均值。如果指定了軸,則沿該軸計算。

示例

import numpy as np 
a = np.array([[1,2,3],[3,4,5],[4,5,6]]) 

print 'Our array is:' 
print a 
print '\n'  

print 'Applying mean() function:' 
print np.mean(a) 
print '\n'  

print 'Applying mean() function along axis 0:' 
print np.mean(a, axis = 0) 
print '\n'  

print 'Applying mean() function along axis 1:' 
print np.mean(a, axis = 1)

它將產生以下輸出:

Our array is:
[[1 2 3]
 [3 4 5]
 [4 5 6]]

Applying mean() function:
3.66666666667

Applying mean() function along axis 0:
[ 2.66666667 3.66666667 4.66666667]

Applying mean() function along axis 1:
[ 2. 4. 5.]

numpy.average()

加權平均值是由每個分量乘以反映其重要性的因子得到的平均值。numpy.average() 函式根據另一個數組中給出的相應權重計算陣列中元素的加權平均值。該函式可以具有軸引數。如果未指定軸,則陣列將被展平。

考慮一個數組 [1,2,3,4] 和相應的權重 [4,3,2,1],加權平均值是透過將對應元素的乘積相加並將其和除以權重之和來計算的。

加權平均值 = (1*4+2*3+3*2+4*1)/(4+3+2+1)

示例

import numpy as np 
a = np.array([1,2,3,4]) 

print 'Our array is:' 
print a 
print '\n'  

print 'Applying average() function:' 
print np.average(a) 
print '\n'  

# this is same as mean when weight is not specified 
wts = np.array([4,3,2,1]) 

print 'Applying average() function again:' 
print np.average(a,weights = wts) 
print '\n'  

# Returns the sum of weights, if the returned parameter is set to True. 
print 'Sum of weights' 
print np.average([1,2,3, 4],weights = [4,3,2,1], returned = True)

它將產生以下輸出:

Our array is:
[1 2 3 4]

Applying average() function:
2.5

Applying average() function again:
2.0

Sum of weights
(2.0, 10.0)

在多維陣列中,可以指定計算的軸。

示例

import numpy as np 
a = np.arange(6).reshape(3,2) 

print 'Our array is:' 
print a 
print '\n'  

print 'Modified array:' 
wt = np.array([3,5]) 
print np.average(a, axis = 1, weights = wt) 
print '\n'  

print 'Modified array:' 
print np.average(a, axis = 1, weights = wt, returned = True)

它將產生以下輸出:

Our array is:
[[0 1]
 [2 3]
 [4 5]]

Modified array:
[ 0.625 2.625 4.625]

Modified array:
(array([ 0.625, 2.625, 4.625]), array([ 8., 8., 8.]))

標準差

標準差是平均值的平方偏差的平均值的平方根。標準差的公式如下:

std = sqrt(mean(abs(x - x.mean())**2))

如果陣列是 [1, 2, 3, 4],則其平均值為 2.5。因此,平方偏差為 [2.25, 0.25, 0.25, 2.25],其平均值的平方根除以 4,即 sqrt (5/4) 為 1.1180339887498949。

示例

import numpy as np 
print np.std([1,2,3,4])

它將產生以下輸出:

1.1180339887498949 

方差

方差是平方偏差的平均值,即 mean(abs(x - x.mean())**2)。換句話說,標準差是方差的平方根。

示例

import numpy as np 
print np.var([1,2,3,4])

它將產生以下輸出:

1.25
廣告