<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          在Python中一馬平川的書寫代碼!

          共 2145字,需瀏覽 5分鐘

           ·

          2021-02-13 20:30

          添加微信號(hào)"CNFeffery"加入技術(shù)交流群

          ?

          本文示例代碼已上傳至我的Github倉庫https://github.com/CNFeffery/DataScienceStudyNotes

          ?

          1 簡介

          鏈?zhǔn)骄幊淌且环N非常高效的組織代碼的方式,典型如pandasscikit-learn中的pipe(),以及R中的管道操作符%>%等,它們都可以幫助我們像連接管道一樣,將計(jì)算過程中的不同步驟順滑的連接起來,從而取代繁瑣的函數(shù)嵌套以及避免多余中間變量的創(chuàng)建。

          圖1

          鏈?zhǔn)骄幊膛c常規(guī)寫法的比較如下例:

          #?非鏈?zhǔn)綄懛?/span>
          func4(func3(func2(func1(A))))

          #?鏈?zhǔn)綄懛?/span>
          A.func1().func2().func3().func4()

          哪一種寫法更簡潔明了,想必大家一眼就看得出來,而今天的文章就將帶大家認(rèn)識(shí)如何借助funct的力量,來改造Python原生列表,賦予其鏈?zhǔn)接?jì)算的能力。

          2 利用funct.Array實(shí)現(xiàn)鏈?zhǔn)接?jì)算

          funct的設(shè)計(jì)理念就是類似Python列表但更棒,它借鑒了numpy的很多特點(diǎn),配合功能豐富的各種鏈?zhǔn)接?jì)算方法,使得我們在使用它完成計(jì)算任務(wù)編寫代碼如絲般順滑時(shí)~

          利用pip install funct完成安裝(本文演示版本為「0.9.2」)之后,下面我們來認(rèn)識(shí)它的一些優(yōu)秀特性吧~

          2.1 funct.Array的創(chuàng)建

          funct中類比列表和numpy中的數(shù)組,創(chuàng)造了Array這種特別的數(shù)據(jù)結(jié)構(gòu),常用的有如下幾種創(chuàng)建方式:

          • 「從其他數(shù)據(jù)結(jié)構(gòu)創(chuàng)建」

          最常規(guī)的方式是從現(xiàn)有的其他數(shù)據(jù)結(jié)構(gòu),轉(zhuǎn)換到Array,常見如下面的幾個(gè)例子:

          圖2
          • 「類似numpy風(fēng)格的規(guī)則創(chuàng)建方法」

          除了從現(xiàn)成的數(shù)據(jù)中創(chuàng)建Array之外,我們還可以類似numpy中的linspace()等API那樣,基于規(guī)則批量創(chuàng)建數(shù)據(jù),常用的有如下兩種方法:

          圖3
          • 「創(chuàng)建嵌套Array」

          既然是建立在列表的基礎(chǔ)上,那么funct對(duì)嵌套Array尤其是不規(guī)則嵌套Array的支持也是很到位的:

          圖4

          但在配合多個(gè)numpy數(shù)組構(gòu)建嵌套Array時(shí)要注意,最后一定要加上toArray()方法才能徹底完成轉(zhuǎn)換:

          圖5

          2.2 funct.Array的索引

          大致介紹完如何創(chuàng)建funct.Array之后,很重要的一點(diǎn)就是如何對(duì)已有Array進(jìn)行索引,在funct中針對(duì)Array設(shè)計(jì)了如下幾種豐富的索引方式:

          • 「列表式索引」

          既然繼承自列表,自然可以使用Python原生列表的索引與切片方式:

          圖6
          • 「數(shù)組式索引」

          我們都知道Python原生列表不能傳入一系列標(biāo)號(hào)對(duì)應(yīng)的數(shù)組來一次性索引出多個(gè)值,除非轉(zhuǎn)換為numpy數(shù)組或pandasSeries,但這又會(huì)在一些應(yīng)用場景下丟失靈活性,但在Array中,它可以!

          圖7
          • 「Bool值索引」

          Array同樣支持傳入Bool值索引,使得我們可以將某個(gè)條件判斷之后的判斷結(jié)果作為索引依據(jù)傳入:

          圖8
          • 「多層索引」

          既然Array是支持嵌套結(jié)構(gòu)的,自然可以進(jìn)行多層索引,但需要注意的是:

          圖9

          2.3 funct.Array的鏈?zhǔn)津}操作

          講完了如何創(chuàng)建與索引funct.Array之后,就來到了本文的重頭戲——Array的鏈?zhǔn)竭\(yùn)算上,在funct.Array中,幾乎所有常見的數(shù)值與邏輯運(yùn)算都被封裝到方法中,我們來一階一階的來看看不同情況下如何組織代碼:

          • 「level1:基礎(chǔ)的數(shù)值運(yùn)算」

          首先我們來看看最基礎(chǔ)的四則運(yùn)算等操作在Array中如何鏈?zhǔn)较氯ィ?/p>

          圖10

          這樣每一步都很清楚,且每一步都可以獨(dú)立添加注釋,保持了代碼的可讀性,譬如可用于歸一化與標(biāo)準(zhǔn)化的計(jì)算上:

          圖11
          • 「level2:配合map方法推廣元素級(jí)別運(yùn)算」

          除了使用內(nèi)置的基礎(chǔ)的運(yùn)算方法之外,在funct.Array中還支持配合map()方法將任意函數(shù)應(yīng)用到每個(gè)元素上,從而無限拓寬計(jì)算的自由性,譬如我們在前面歸一化的基礎(chǔ)上對(duì)數(shù)據(jù)進(jìn)行分箱:

          圖12
          • 「level3:配合zip方法引入其他Array參與運(yùn)算」

          當(dāng)我們想要在鏈?zhǔn)竭\(yùn)算中引入其他數(shù)組對(duì)象時(shí),就可以用到更高級(jí)的zip()方法,譬如我們想找出多個(gè)Array中相同位置最大值:

          圖13
          • 「level4:條件分組」

          pandas中我們可以利用groupby()進(jìn)行數(shù)據(jù)分箱并銜接任意形式的運(yùn)算,在funct.Array中我們也可以配合groupBy()方法實(shí)現(xiàn):

          圖14

          而除了本文介紹到的這一點(diǎn)API之外,funct還提供了上百種實(shí)用API,并且還具有「并行執(zhí)行」「并發(fā)執(zhí)行」等高級(jí)特性,感興趣的朋友可以前往官方文檔查看( https://github.com/Lauriat/funct )。


          以上就是本文的全部內(nèi)容,歡迎在評(píng)論區(qū)與我進(jìn)行討論~

          加入知識(shí)星球【我們談?wù)摂?shù)據(jù)科學(xué)】

          300+小伙伴一起學(xué)習(xí)!








          · 推薦閱讀?·

          Python+Dash快速web應(yīng)用開發(fā):回調(diào)交互篇(下)

          秒啊,速來get這9個(gè)jupyter實(shí)用技巧!

          Python+Dash快速web應(yīng)用開發(fā):回調(diào)交互篇(中)


          瀏覽 49
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费无码高清视频 | 男女午夜激情福利视频 | 亚洲无码我不卡 | 人人摸人人操人人摸 | 人人操操人人 |