《利用Python進行數(shù)據(jù)分析》 附錄 A.6更多關于排序的內(nèi)容

附錄A? 高階Numpy


A.6 更多關于排序的內(nèi)容

1.ndarray的sort實例方法

?????? 和Python的內(nèi)建列表類似,ndarray的sort實例方法是一種原位排序傻盟,意味著數(shù)組的內(nèi)容進行了重排列姜骡,而不是生成了一個新的數(shù)組(見圖A-1)

圖A-1:ndarray的sort實例方法

:在進行數(shù)組原位排序時寂殉,請記住如果數(shù)組是不同ndarray的視圖的話蹋盆,原始數(shù)組將會被改變

2.numpy.sort方法

??????? 另一方面傀缩,numpy.sort產(chǎn)生的是一個數(shù)組的新的漆魔、排序后的副本坷檩。否則,它接受與ndarray.sort相同的參數(shù)(如kind)(見圖A-2)

圖A-2:numpy.sort方法

3.降序排序

?????? 你可能會注意到所有的排序方法都沒有降序排列的選項改抡。這是一個實踐中的問題矢炼,因為數(shù)組切片會產(chǎn)生視圖,因此不需要生成副本也不需要任何計算工作阿纤。很多Python用戶對于列表(假設列表名為values)的一種"技巧"很熟悉句灌,即values[::-1]會返回一個反序的列表。對ndarray也是一樣(見圖A-3)

圖A-3:反序排序

A.6.1 間接排序:argsort和lexsort

?????? 在數(shù)據(jù)分析中欠拾,你可能需要通過一個或多個鍵對數(shù)據(jù)集進行重新排序胰锌。例如,有關某些學生的數(shù)據(jù)表可能需要按姓氏排序藐窄,然后按名字排序资昧。這是一個間接排序的例子,如果你讀過pandas相關的章節(jié)枷邪,你已經(jīng)看到了許多更高級的例子榛搔。給定一個或多個鍵(一個或多個值的數(shù)組),你希望獲得一個整數(shù)索引(我將它們通稱為索引器)數(shù)組东揣,整數(shù)索引將告訴你如何重新排列數(shù)據(jù)為指定順序践惑。兩種實現(xiàn)該功能的方法是argsort和numpy.lexsort。

1.argsort方法

示例1:(見圖A-4)

圖A-4:簡單示例

示例2:(見圖A-5)

圖A-5:二維數(shù)組按照第一行排序

2.lexsort方法

?????? lexsort類似于argsort嘶卧,但它對多鍵數(shù)組執(zhí)行間接字典排序尔觉。假設我們想對一些由名字和姓氏標識的數(shù)據(jù)進行排序((見圖A-6)

圖A-6:lexsort方法

?????? 在你第一次使用lexsort時,lexsort可能有點令人困惑芥吟,因為用于排序數(shù)據(jù)的鍵的順序從傳遞的最后一個數(shù)組開始侦铜。這里,last_name在first_name之前使用钟鸵。

? ? ?? pandas的方法钉稍,比如Series和DataFrame的sort_values方法是對這些方法的變相實現(xiàn)(這些方法也必須要考慮缺失值)。


A.6.2 其他的排序算法

????? 穩(wěn)定排序算法保留了相等元素的相對位置棺耍。在相對順序有意義的間接排序中贡未,這可能尤其重要(見圖A-7)

圖A-7:穩(wěn)定排序

??????? 唯一可用的穩(wěn)定排序是mergesort,它保證了O(n log n)性能(對于復雜性增益),但其平均性能比默認的quicksort方法更差俊卤。請參閱表A-3嫩挤,了解可用方法及其相對性能(和性能保證)的總結。這是大多數(shù)用戶永遠不必考慮的事情消恍,但知道它的存在是有用的岂昭。

表A-3:數(shù)組排序方法

A.6.3 數(shù)組的部分排序

??????? 排序的目標之一可以是確定數(shù)組中最大或最小的元素。NumPy已經(jīng)優(yōu)化了方法numpy. partition和np.argpartition狠怨,用于圍繞第k個最小元素對數(shù)組進行分區(qū)约啊。

1.numpy. partition方法排序(見圖A-8)

圖A-8:部分排序

注:在調(diào)用partition(arr,3)之后颖对,結果中的前三個元素是最小的三個值昵慌,并不是特定的順序。

2.numpy.argpartition類似于numpy.argsort排序,它返回的是將數(shù)據(jù)重新排列為等價順序的索引(見圖A-9)

圖A-9:numpy.argpartition方法

A.6.4 numpy.searchsorted:在已排序的數(shù)組尋找元素

1.searchsorted是一個數(shù)組方法茵汰,它對已排序數(shù)組執(zhí)行二分搜索,返回數(shù)組中需要插入值的位置以保持排序(見圖A-10)

圖A-10:searchsorted方法

2.應用2

????????? 假設我們有一個介于0和10,000之間的數(shù)值孽鸡,以及我們想用來分隔數(shù)據(jù)的單獨的“桶邊界”數(shù)組(見圖A-11)

圖A-11:應用2

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蹂午,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子彬碱,更是在濱河造成了極大的恐慌豆胸,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巷疼,死亡現(xiàn)場離奇詭異晚胡,居然都是意外死亡,警方通過查閱死者的電腦和手機嚼沿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門估盘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人骡尽,你說我怎么就攤上這事遣妥。” “怎么了攀细?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵箫踩,是天一觀的道長。 經(jīng)常有香客問我谭贪,道長境钟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任俭识,我火速辦了婚禮慨削,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己理盆,他們只是感情好痘煤,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著猿规,像睡著了一般衷快。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上姨俩,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天蘸拔,我揣著相機與錄音,去河邊找鬼环葵。 笑死调窍,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的张遭。 我是一名探鬼主播邓萨,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼菊卷!你這毒婦竟也來了缔恳?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤洁闰,失蹤者是張志新(化名)和其女友劉穎歉甚,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扑眉,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡纸泄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了腰素。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聘裁。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖耸弄,靈堂內(nèi)的尸體忽然破棺而出咧虎,到底是詐尸還是另有隱情,我是刑警寧澤计呈,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布砰诵,位于F島的核電站,受9級特大地震影響捌显,放射性物質(zhì)發(fā)生泄漏茁彭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一扶歪、第九天 我趴在偏房一處隱蔽的房頂上張望理肺。 院中可真熱鬧摄闸,春花似錦、人聲如沸妹萨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乎完。三九已至熏兄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間树姨,已是汗流浹背摩桶。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留帽揪,地道東北人硝清。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像转晰,于是被迫代替她去往敵國和親芦拿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 資料來源:https://github.com/BrambleXu/pydata-notebook 在這篇附錄中挽霉,...
    林清貓耳閱讀 938評論 0 4
  • 基礎篇NumPy的主要對象是同種元素的多維數(shù)組防嗡。這是一個所有的元素都是一種類型变汪、通過一個正整數(shù)元組索引的元素表格(...
    oyan99閱讀 5,128評論 0 18
  • 資料來源:https://github.com/BrambleXu/pydata-notebook NumPy(N...
    林清貓耳閱讀 1,546評論 0 20
  • 137累積法【子揚媽媽】第127天【20180828】 讀經(jīng)內(nèi)容1.易經(jīng)周易下經(jīng)62侠坎、63、64卦裙盾;2.笠翁對韻上...
    楊鳳娟_5e5c閱讀 92評論 0 0
  • 鴿子被烏鴉吃了 它渾身僵硬的躺在冰冷的甲板上 肚腹被啄開 內(nèi)臟已所剩無幾 周圍散落著潔白的羽毛 那曾是它漂亮的盔甲...
    韓家逆子_閱讀 340評論 0 0