詳解Python如何獲取列表(List)的中位數(shù)
前言
中位數(shù)是一個(gè)可將數(shù)值集合劃分為相等的上下兩部分的一個(gè)數(shù)值。如果列表數(shù)據(jù)的個(gè)數(shù)是奇數(shù),則列表中間那個(gè)數(shù)據(jù)就是列表數(shù)據(jù)的中位數(shù);如果列表數(shù)據(jù)的個(gè)數(shù)是偶數(shù),則列表中間那2個(gè)數(shù)據(jù)的算術(shù)平均值就是列表數(shù)據(jù)的中位數(shù)。在這個(gè)任務(wù)里,你將得到一個(gè)含有自然數(shù)的非空數(shù)組(X)。你必須把它分成上下兩部分,找到中位數(shù)。
輸入: 一個(gè)作為數(shù)組的整數(shù)(int)列表(list)的。
輸出: 數(shù)組的中位數(shù)(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
如何使用: 中位數(shù)在概率論和統(tǒng)計(jì)學(xué)中得到應(yīng)用,它偏態(tài)分布中有顯著的價(jià)值。例如:我們想從一組數(shù)據(jù)中知道人們的平均財(cái)富 -- 100人一個(gè)月收入100美元,10人一個(gè)月收入1,000,000美元。如果我們算平均值,得到的是91000美元。這是一個(gè)完全沒有向我們展示真實(shí)情況的奇怪的值。所以在這種情況下,中位數(shù)會(huì)給我們更有用的值和較好的描述。
前提: 1 < len(data) ≤ 1000 all(0 ≤ x < 10 ** 6 for x in data)
普通方法:
對(duì)列表進(jìn)行排序,針對(duì)列表長度是奇數(shù)還是偶數(shù)的不同情況,計(jì)算中位數(shù)。
def get_median(data): data = sorted(data) size = len(data) if size % 2 == 0: # 判斷列表長度為偶數(shù) median = (data[size//2]+data[size//2-1])/2 data[0] = median if size % 2 == 1: # 判斷列表長度為奇數(shù) median = data[(size-1)//2] data[0] = median return data[0]
最佳方法:
這個(gè)解決方法非常巧妙,它利用了取反數(shù)和為1的特性,通過列表負(fù)索引來獲得列表中位數(shù)。
對(duì) return (data[half] + data[~half]) / 2
的解釋:
排序后得到序列[1,2,3,4,5,6],其列表長度為偶數(shù),中位數(shù)由列表中間兩位元素3(索引為2),4(索引為3)決定。而元素4的負(fù)索引為-3,正好是索引2的取反數(shù)。
排序后得到序列[1,2,3,4,5],其列表長度為奇數(shù),中位數(shù)由列表中間元素3(索引為2,負(fù)索引為-3)決定。仍然符合代碼。
def get_median(data): data.sort() half = len(data) // 2 return (data[half] + data[~half]) / 2
總結(jié)
以上就是Python實(shí)現(xiàn)獲取列表的中位數(shù)的全部內(nèi)容,希望本文的內(nèi)容對(duì)大家學(xué)習(xí)python能有所幫助。
相關(guān)文章
python3.7實(shí)現(xiàn)云之訊、聚合短信平臺(tái)的短信發(fā)送功能
這篇文章主要介紹了python3.7實(shí)現(xiàn)云之訊、聚合短信平臺(tái)的短信發(fā)送功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09OpenCV實(shí)現(xiàn)圖像平滑處理的方法匯總
這篇文章為大家詳細(xì)介紹了在圖像上面進(jìn)行了圖像均值濾波、方框?yàn)V波 、高斯濾波、中值濾波、雙邊濾波、2D卷積等具體操作的方法,需要的可以參考一下2023-02-02python實(shí)現(xiàn)將文本轉(zhuǎn)換成語音的方法
這篇文章主要介紹了python實(shí)現(xiàn)將文本轉(zhuǎn)換成語音的方法,涉及Python中pyTTS模塊的相關(guān)使用技巧,需要的朋友可以參考下2015-05-05解決django-xadmin列表頁filter關(guān)聯(lián)對(duì)象搜索問題
今天小編就為大家分享一篇解決django-xadmin列表頁filter關(guān)聯(lián)對(duì)象搜索問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11Pytorch中關(guān)于nn.Conv2d()參數(shù)的使用
這篇文章主要介紹了Pytorch中關(guān)于nn.Conv2d()參數(shù)的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06淺談tensorflow1.0 池化層(pooling)和全連接層(dense)
本篇文章主要介紹了淺談tensorflow1.0 池化層(pooling)和全連接層(dense),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04python之從文件讀取數(shù)據(jù)到list的實(shí)例講解
下面小編就為大家分享一篇python之從文件讀取數(shù)據(jù)到list的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04