欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

numpy多級排序lexsort函數(shù)的使用

 更新時間:2023年03月27日 15:03:20   作者:地球被支點撬走啦  
本文主要介紹了numpy多級排序lexsort函數(shù)的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1、lexsort() 排的是個啥

 lexsort() 函數(shù)的定義如下:

def lexsort(keys, axis=None)

lexsort是一種多級排序方法。作用為對給定的 keys 中的最后一個 key 排序,每一個 key 都被認為是列向量,其他 keys 用來輔助最后一個 key 進行排序。最后返回最后一個 key 進行排序的索引。

哈哈哈是不是沒看懂上面的解釋?莫慌莫慌,我給舉個簡單的例子保證秒懂,可以回想這樣一個場景:

對一堆學生的成績進行排名,則排名結果就是按照總成績從低到高排序,這個還沒排序的總成績表就是上述說的最后一個 key ,排序后的索引就是上述的返回值。

比如初始總成績數(shù)組為:[99, 100, 98, 95, 80]  ,這就是 最后一個 key,升序排序后的數(shù)組為:[80, 95, 98, 99, 100],對應的索引為:[4, 3, 2, 0, 1],這個索引數(shù)組就是 lexsort 函數(shù)的返回值。

但是如果兩個人的總成績一樣怎么進一步排序呢?這時可以按照語文成績的升序進行排序,如果語文成績還一樣呢?那再看數(shù)學成績,如果數(shù)學還一樣呢?再查英語成績,如果還。。。(沒了沒了,再相同我就要懷疑這倆人作弊了?。┻@里的 語文成績、數(shù)學成績、英語成績 就是最后一個 key 前面的 keys,記得是從后往前數(shù)的。也就是最后一個 key 相同,就看倒數(shù)第二個 key,倒數(shù)第二個相同就看倒數(shù)第三個 key。

2、舉個例子

默認你已經(jīng)理解了,那就舉一個例子來過一遍:

import numpy as np
a = [[3, 3, 8],
     [6, 9, 7],
     [3, 3, 2]]
b = np.array(a)  # 轉換為 numpy 數(shù)組
"""
index = np.lexsort((b[:, 2], b[:, 1], b[:, 0])) 的運行情況:
step-1、首先按照第一列 b[:, 0] 的數(shù)值 [3, 6, 3] 升序順序對每行的位置進行重排, 第一行有兩個值相同, 轉到step-2
            [[3, 3, 8],        [[3, 3, 8],
             [6, 9, 7],   -->   [3, 3, 2],   
             [3, 3, 2]]         [6, 9, 7]]
step-2、第一列數(shù)值相同的情況下按照相應位置第二列 b[:, 1] 的值繼續(xù)排序, 第二列對應位置任然相同, 轉到step-3
            [[3, 3, 8],        [[3, 3, 8],
             [6, 9, 7],   -->   [3, 3, 2],   
             [3, 3, 2]]         [6, 9, 7]]
step-3、第二列數(shù)值相同的情況下按照相應位置第三列 b[:, 2] 的值繼續(xù)排序
            [[3, 3, 8],        [[3, 3, 2],
             [6, 9, 7],   -->   [3, 3, 8],   
             [3, 3, 2]]         [6, 9, 7]]
總結: 第一列的排序結果為[3, 3, 6] 對應的索引值為 [2, 0, 1]
"""
index = np.lexsort((b[:, 2], b[:, 1], b[:, 0]))
print(index)  # 輸出結果: [2 0 1]
ans = b[index] # 按照排序結果重置數(shù)組元素的位置
print(ans)
# ans 的結果:
[[3 3 2]
 [3 3 8]
 [6 9 7]]

如果直接對矩陣進行排序呢?

"""
相當于拆解為
key1 = b[0,:]
key2 = b[1,:]
key3 = b[2,:]  # 最后一行為主排序序列
index = np.lexsort(b) 等效為: index = np.lexsort((b[0,:], b[1,:], b[2,:]))
"""
index = np.lexsort(b) 
print(index)  # 輸出結果: [2 0 1]

即,當輸入是一個矩陣時,默認排序最后一行的數(shù)據(jù),前面的行都是輔助行。

到此這篇關于numpy多級排序lexsort函數(shù)的使用的文章就介紹到這了,更多相關numpy lexsort函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 使用pycharm生成代碼模板的實例

    使用pycharm生成代碼模板的實例

    今天小編就為大家分享一篇使用pycharm生成代碼模板的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python?異步之如何啟動獲取事件循環(huán)

    Python?異步之如何啟動獲取事件循環(huán)

    這篇文章主要為大家介紹了Python?異步之如何啟動獲取事件循環(huán)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 如何使用Python?VTK高亮顯示actor

    如何使用Python?VTK高亮顯示actor

    這篇文章主要介紹了如何使用Python?VTK高亮顯示actor,通過Python-VTK在同一個窗口中,高亮顯示選中的actor。本例子中的代碼,當窗口中的圓球actor被選中時,會變成紅色,并且會顯示actor三遍面片邊緣信息,下文相關內(nèi)容需要的小伙伴可以參考一下
    2022-04-04
  • 用python畫圣誕樹三種代碼示例介紹

    用python畫圣誕樹三種代碼示例介紹

    大家好,本篇文章主要講的是用python畫圣誕樹三種代碼示例介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Windows 8.1 64bit下搭建 Scrapy 0.22 環(huán)境

    Windows 8.1 64bit下搭建 Scrapy 0.22 環(huán)境

    這篇文章主要介紹了Windows 8.1 64bit下搭建 Scrapy 0.22 環(huán)境,需要的朋友可以參考下
    2018-11-11
  • 使用python 3實現(xiàn)發(fā)送郵件功能

    使用python 3實現(xiàn)發(fā)送郵件功能

    本文通過實例代碼給大家介紹了使用python 3實現(xiàn)發(fā)送郵件功能,代碼簡單易懂非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • Python數(shù)據(jù)清洗&預處理入門教程

    Python數(shù)據(jù)清洗&預處理入門教程

    凡事預則立,不預則廢,訓練機器學習模型也是如此。數(shù)據(jù)清洗和預處理是模型訓練之前的必要過程,否則模型可能就廢了。本文是一個初學者指南,將帶你領略如何在任意的數(shù)據(jù)集上,針對任意一個機器學習模型,完成數(shù)據(jù)預處理工作
    2022-10-10
  • Python利用字典樹實現(xiàn)獵詞游戲

    Python利用字典樹實現(xiàn)獵詞游戲

    獵詞(word hunt)是一類很常見的游戲,給你一張字母組成的表,然后讓你在這些字母中盡可能多的去尋找單詞。這類游戲用字典樹就能輕松完成,本文就來具體講講實現(xiàn)步驟,需要的可以參考一下
    2022-06-06
  • Python導入引用其他文件的函數(shù)實戰(zhàn)案例(推薦!)

    Python導入引用其他文件的函數(shù)實戰(zhàn)案例(推薦!)

    這篇文章主要給大家介紹了關于Python導入引用其他文件的函數(shù)的相關資料,文中通過代碼以及圖文介紹的非常詳細,對大家學習或者使用Python具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • Python編程實現(xiàn)控制cmd命令行顯示顏色的方法示例

    Python編程實現(xiàn)控制cmd命令行顯示顏色的方法示例

    這篇文章主要介紹了Python編程實現(xiàn)控制cmd命令行顯示顏色的方法,結合實例形式分析了Python針對命令行字符串顯示顏色屬性相關操作技巧,需要的朋友可以參考下
    2017-08-08

最新評論