第 85 天:NumPy 統計函數

圖片

數學統計在咱們的程序當中特別是數據分析當中是必不可少的一部分,本文就來介紹一下 NumPy 常見的統計函數。html

最大值與最小值

numpy.amin()

用於計算數組中的元素沿指定軸的最小值。python

能夠經過 axis 參數傳入座標軸來指定統計的軸,當指定 axis 時,axis 的範圍爲 ndarray 的維度範圍,能夠利用 shape 函數獲取 ndrray 的維度。咱們來看例子:數組

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始數組:")print(a)print('\n')
print(np.char.center('最小值', 15, '*'))print("全部維度的最小值:")print(np.amin(a))print('\n')print("0軸的最小值:")print(np.amin(a, 0))print('\n')print("1軸的最小值:")print(np.amin(a, 1))print('\n')
# 返回初始數組:[[1 2 3] [4 5 6] [7 8 9]]******最小值******全部維度的最小值:10軸的最小值:[1 2 3]1軸的最小值:[1 4 7]

咱們例子中使用的是二維數組,因此 axis 只有取0和1兩個值。其實咱們還能夠用 numpy.min() 來計算,效果是同樣的,只不過 NumPy 的官方文檔上沒有寫 numpy.min() 這個方法,看源碼咱們知道這個方法實際上是numpy.amin() 的別名。ide

numpy.amax()

用於計算數組中的元素沿指定軸的最大值。函數

能夠經過 axis 參數傳入座標軸來指定統計的軸,當指定 axis 時,axis 的範圍爲 ndarray 的維度範圍,能夠利用 shape 函數獲取 ndrray 的維度。咱們來看例子:學習

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始數組:")print(a)print('\n')
print(np.char.center('最大值', 15, '*'))print("全部維度的最大值:")print(np.amax(a))print('\n')print("0軸的最大值:")print(np.amax(a, 0))print('\n')print("1軸的最大值:")print(np.amax(a, 1))print('\n')
# 返回初始數組:[[1 2 3] [4 5 6] [7 8 9]]******最大值******全部維度的最大值:90軸的最大值:[7 8 9]1軸的最大值:[3 6 9]

這個函數和 numpy.amin() 函數是相反的含義,也能夠用 numpy.max() 來計算。spa

numpy.ptp()

計算數組中元素最大值與最小值的差(最大值 - 最小值)。code

實例:orm

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始數組:")print(a)print('\n')
print(np.char.center('最大值與最小值的差', 15, '*'))print("全部維度的極差:")print(np.ptp(a))print('\n')print("0軸的極差:")print(np.ptp(a, 0))print('\n')print("1軸的極差:")print(np.ptp(a, 1))print('\n')
# 返回***最大值與最小值的差***全部維度的極差:80軸的極差:[6 6 6]1軸的極差:[2 2 2]

這個方法能夠迅速的找出數組中任何維度的最大最小值之差,仍是很方便的。htm

中位數

numpy.percentile()

百分位數是統計中使用的度量,表示小於這個值的觀察值的百分比。
numpy.percentile(a, q, axis) 接收如下參數:
a: 輸入數組
q: 要計算的百分位數,在 0 ~ 100 之間
axis: 沿着它計算百分位數的軸

這個百分位怎麼理解呢?

例如第60個百分位是這樣一個值,它使得至少有60%的數據項小於或等於這個值,且至少有40%的數據項大於或等於這個值。

咱們來看看實例:

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始數組:")print(a)print('\n')
print(np.char.center('百分位數', 15, '*'))print("50%的分位數,即數組排序以後的中位數:")print(np.percentile(a, 50))print('\n')print("0軸的中位數:")print(np.percentile(a, 50, 0))print('\n')print("1軸的中位數:")print(np.percentile(a, 50, 1))print('\n')
# 返回******百分位數*****50%的分位數,即數組排序以後的中位數:5.00軸的中位數:[4. 5. 6.]1軸的中位數:[2. 5. 8.]

numpy.median()

用於計算數組 a 中元素的中位數(中值)

咱們來看實例:

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始數組:")print(a)print('\n')
print(np.char.center('計算中位數', 15, '*'))print("全部元素的中位數:")print(np.median(a))print('\n')print("0軸的中位數:")print(np.median(a, 0))print('\n')print("1軸的中位數:")print(np.median(a, 1))print('\n')
# 返回*****計算中位數*****全部元素的中位數:5.00軸的中位數:[4. 5. 6.]1軸的中位數:[2. 5. 8.]

總數與均值

numpy.sum()

用於按指定軸計算數組中的元素的和。

實例:

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始數組:")print(a)print('\n')
print(np.char.center('求和', 15, '*'))print("全部維度的和:")print(np.sum(a))print('\n')print("按0軸求和:")print(np.sum(a, 0))print('\n')print("按1軸求和:")print(np.sum(a, 1))print('\n')
# 返回*******求和******全部維度的和:45按0軸求和:[12 15 18]按1軸求和:[ 6 15 24]

無論按哪一個維度求和,得出的結果再相加確定等於全部維度求和的結果。

numpy.mean()

按軸計算數組中元素的算術平均值。

算術平均值是沿軸的元素的總和除以元素的數量。咱們來看實例:

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始數組:")print(a)print('\n')
print(np.char.center('計算算術平均值', 15, '*'))print("全部元素的算術平均值:")print(np.mean(a))print('\n')print("0軸的算術平均值:")print(np.mean(a, 0))print('\n')print("1軸的算術平均值:")print(np.mean(a, 1))print('\n')
# 返回****計算算術平均值****全部元素的算術平均值:5.00軸的算術平均值:[4. 5. 6.]1軸的算術平均值:[2. 5. 8.]

numpy.average()

根據在另外一個數組中給出的各自的權重計算數組中元素的加權平均值,該函數能夠接收一個軸參數,若是沒有指定軸,則數組會被展開。

加權平均值是由每一個份量乘以權重因子獲得的平均值。即將各數值乘以相應的權數,而後加總求和獲得整體值,再除以總的單位數。

舉個例子:數組[1, 2, 3, 4]對應的權重是[4, 3, 2, 1],那麼加權平均值的計算公式爲:

加權平均值=(14+23+32+41)/(4+3+2+1)

實例:

import numpy as np
print(np.char.center('加權平均值', 15, '*'))b = np.array([1, 2, 3, 4])print("全部元素的加權平均值(不指定權重至關於求平均值):")print(np.average(b))print('\n')print("指定權重的加權平均值:")print(np.average(b, weights=[4, 3, 2, 1]))print('\n')print("指定權重的加權平均值以及權重的和:")print(np.average(b, weights=[4, 3, 2, 1], returned=True))print('\n')
# 返回*****加權平均值*****全部元素的加權平均值(不指定權重至關於求平均值):2.5指定權重的加權平均值:2.0指定權重的加權平均值以及權重的和:(2.0, 10.0)

咱們能夠經過returned參數來設置是否返回權重的和。在上例中,權重數組中元素相加等於10。

方差與標準差

numpy.var()

計算數組中元素的方差

統計中的方差(樣本方差)是每一個樣本值與全體樣本值的平均數之差的平方值的平均數。計算公式爲:

mean((x - x.mean())** 2)。

咱們來看實例:

import numpy as np
print(np.char.center('計算方差', 15, '*'))print(np.var([1, 2, 3, 4]))print('\n')
# 返回******計算方差*****1.25

numpy.std()

計算數組中袁術的標準差

標準差是一組數據平均值分散程度的一種度量,是方差的算術平方根。標準差公式以下:

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

咱們來看實例:

import numpy as np
print(np.char.center('計算標準差', 15, '*'))print(np.std([1, 2, 3, 4]))print('\n')
# 返回*****計算標準差*****1.118033988749895

總結

本文向你們介紹了 NumPy 的統計函數,包括最大最小值函數、總數與均值函數、中位數函數以及方差與標準差函數。這些函數主要運用在一些數據分析的統計工做中,咱們能夠不用實現這些統計方法的原理而直接使用函數,使咱們的代碼簡潔而高效。

參考

https://numpy.org/devdocs/reference/routines.statistics.html

文中示例代碼:python-100-days

系列文章
第 84 天:NumPy 數學函數
第 83 天:NumPy 字符串操做
第 82 天:Python Web 開發之 JWT 簡介
第 81 天:NumPy Ndarray 對象及數據類型
從 0 學習 Python 0 - 80 大合集總結
相關文章
相關標籤/搜索