天天看點

python取清單中位數_詳解Python如何擷取清單(List)的中位數

前言

中位數是一個可将數值集合劃分為相等的上下兩部分的一個數值。如果清單資料的個數是奇數,則清單中間那個資料就是清單資料的中位數;如果清單資料的個數是偶數,則清單中間那2個資料的算術平均值就是清單資料的中位數。在這個任務裡,你将得到一個含有自然數的非空數組(X)。你必須把它分成上下兩部分,找到中位數。

輸入: 一個作為數組的整數(int)清單(list)的。

輸出: 數組的中位數(int, float).

示例

get_median([1, 2, 3, 4, 5]) == 3

get_median([3, 1, 2, 5, 3]) == 3

get_median([1, 300, 2, 200, 1]) == 2

get_median([3, 6, 20, 99, 10, 15]) == 12.5

如何使用:中位數在機率論和統計學中得到應用,它偏态分布中有顯著的價值。例如:我們想從一組資料中知道人們的平均财富 -- 100人一個月收入100美元,10人一個月收入1,000,000美元。如果我們算平均值,得到的是91000美元。這是一個完全沒有向我們展示真實情況的奇怪的值。是以在這種情況下,中位數會給我們更有用的值和較好的描述。

前提:1 < len(data) ≤ 1000 all(0 ≤ x < 10 ** 6 for x in data)

普通方法:

對清單進行排序,針對清單長度是奇數還是偶數的不同情況,計算中位數。

def get_median(data):

data = sorted(data)

size = len(data)

if size % 2 == 0: # 判斷清單長度為偶數

median = (data[size//2]+data[size//2-1])/2

data[0] = median

if size % 2 == 1: # 判斷清單長度為奇數

median = data[(size-1)//2]

data[0] = median

return data[0]

最佳方法:

這個解決方法非常巧妙,它利用了取反數和為1的特性,通過清單負索引來獲得清單中位數。

對 return (data[half] + data[~half]) / 2的解釋:

python取清單中位數_詳解Python如何擷取清單(List)的中位數

排序後得到序列[1,2,3,4,5,6],其清單長度為偶數,中位數由清單中間兩位元素3(索引為2),4(索引為3)決定。而元素4的負索引為-3,正好是索引2的取反數。

排序後得到序列[1,2,3,4,5],其清單長度為奇數,中位數由清單中間元素3(索引為2,負索引為-3)決定。仍然符合代碼。

def get_median(data):

data.sort()

half = len(data) // 2

return (data[half] + data[~half]) / 2

總結

以上就是Python實作擷取清單的中位數的全部内容,希望本文的内容對大家學習python能有所幫助。

如您對本文有疑問或者有任何想說的,請點選進行留言回複,萬千網友為您解惑!