NumPy統計函式


NumPy - 統計函式

NumPy 有很多有用的統計函式,用於從陣列中給定的元素中查詢最小,最大,百分標準差和方差等。 函式說明如下:

numpy.amin()numpy.amax()

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

範例

import numpy as np 
a = np.array([[3,7,5],[8,4,3],[2,4,9]])  
print  '我們的陣列是:'  
print a 
print  '\n'  
print  '呼叫 amin() 函式:'  
print np.amin(a,1)  
print  '\n'  
print  '再次呼叫 amin() 函式:'  
print np.amin(a,0)  
print  '\n'  
print  '呼叫 amax() 函式:'  
print np.amax(a)  
print  '\n'  
print  '再次呼叫 amax() 函式:'  
print np.amax(a, axis =  0)

輸出如下:

我們的陣列是:
[[3 7 5]
[8 4 3]
[2 4 9]]

呼叫 amin() 函式:
[3 3 2]

再次呼叫 amin() 函式:
[2 4 3]

呼叫 amax() 函式:
9

再次呼叫 amax() 函式:
[8 7 9]

numpy.ptp()

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

import numpy as np 
a = np.array([[3,7,5],[8,4,3],[2,4,9]])  
print  '我們的陣列是:'  
print a 
print  '\n'  
print  '呼叫 ptp() 函式:'  
print np.ptp(a)  
print  '\n'  
print  '沿軸 1 呼叫 ptp() 函式:'  
print np.ptp(a, axis =  1)  
print  '\n'  
print  '沿軸 0 呼叫 ptp() 函式:'  
print np.ptp(a, axis =  0)

輸出如下:

我們的陣列是:
[[3 7 5]
[8 4 3]
[2 4 9]]

呼叫 ptp() 函式:
7

沿軸 1 呼叫 ptp() 函式:
[4 5 7]

沿軸 0 呼叫 ptp() 函式:
[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  '我們的陣列是:'  
print a 
print  '\n'  
print  '呼叫 percentile() 函式:'  
print np.percentile(a,50)  
print  '\n'  
print  '沿軸 1 呼叫 percentile() 函式:'  
print np.percentile(a,50, axis =  1)  
print  '\n'  
print  '沿軸 0 呼叫 percentile() 函式:'  
print np.percentile(a,50, axis =  0)

輸出如下:

我們的陣列是:
[[30 40 70]
 [80 20 10]
 [50 90 60]]

呼叫 percentile() 函式:
50.0

沿軸 1 呼叫 percentile() 函式:
[ 40. 20. 60.]

沿軸 0 呼叫 percentile() 函式:
[ 50. 40. 60.]

numpy.median()

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

範例

import numpy as np 
a = np.array([[30,65,70],[80,95,10],[50,90,60]])  
print  '我們的陣列是:'  
print a 
print  '\n'  
print  '呼叫 median() 函式:'  
print np.median(a)  
print  '\n'  
print  '沿軸 0 呼叫 median() 函式:'  
print np.median(a, axis =  0)  
print  '\n'  
print  '沿軸 1 呼叫 median() 函式:'  
print np.median(a, axis =  1)

輸出如下:

我們的陣列是:
[[30 65 70]
 [80 95 10]
 [50 90 60]]

呼叫 median() 函式:
65.0

沿軸 0 呼叫 median() 函式:
[ 50. 90. 60.]

沿軸 1 呼叫 median() 函式:
[ 65. 80. 60.]

numpy.mean()

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

範例

import numpy as np 
a = np.array([[1,2,3],[3,4,5],[4,5,6]])  
print  '我們的陣列是:'  
print a 
print  '\n'  
print  '呼叫 mean() 函式:'  
print np.mean(a)  
print  '\n'  
print  '沿軸 0 呼叫 mean() 函式:'  
print np.mean(a, axis =  0)  
print  '\n'  
print  '沿軸 1 呼叫 mean() 函式:'  
print np.mean(a, axis =  1)

輸出如下:

我們的陣列是:
[[1 2 3]
 [3 4 5]
 [4 5 6]]

呼叫 mean() 函式:
3.66666666667

沿軸 0 呼叫 mean() 函式:
[ 2.66666667 3.66666667 4.66666667]

沿軸 1 呼叫 mean() 函式:
[ 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  '我們的陣列是:'  
print a 
print  '\n'  
print  '呼叫 average() 函式:'  
print np.average(a)  
print  '\n'  
# 不指定權重時相當於 mean 函式
wts = np.array([4,3,2,1])  
print  '再次呼叫 average() 函式:'  
print np.average(a,weights = wts)  
print  '\n'  
# 如果 returned 引數設為 true,則返回權重的和  
print  '權重的和:'  
print np.average([1,2,3,  4],weights =  [4,3,2,1], returned =  True)

輸出如下:

我們的陣列是:
[1 2 3 4]

呼叫 average() 函式:
2.5

再次呼叫 average() 函式:
2.0

權重的和:
(2.0, 10.0)

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

範例

import numpy as np 
a = np.arange(6).reshape(3,2)  
print  '我們的陣列是:'  
print a 
print  '\n'  
print  '修改後的陣列:' 
wt = np.array([3,5])  
print np.average(a, axis =  1, weights = wt)  
print  '\n'  
print  '修改後的陣列:'  
print np.average(a, axis =  1, weights = wt, returned =  True)

輸出如下:

我們的陣列是:
[[0 1]
 [2 3]
 [4 5]]

修改後的陣列:
[ 0.625 2.625 4.625]

修改後的陣列:
(array([ 0.625, 2.625, 4.625]), array([ 8., 8., 8.]))

標準差

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

std = sqrt(mean((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((x - x.mean())** 2)。 換句話說,標準差是方差的平方根。

範例

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

輸出如下:

1.25