在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

numexpr:你以為numpy已經夠快了,其實它還可以更快

電子設計 ? 來源: 電子設計 ? 作者: 電子設計 ? 2020-12-14 23:53 ? 次閱讀

開篇

python語言被廣泛用于數據分析和機器學習。但是,由于python的底層特性,python的運行速率低一直被廣泛詬病。其中,numpy和pandas的廣泛使用已經將數據處理和機器學習的速率提升了幾個檔次。

但是,隨著數據的越來越多,很多人已經不再滿足numpy和pandas的速度,從而退出了一批加速優化拓展包。這篇文章主要介紹一個輕量、但是功能強大的python擴展包 ”NumExpr",看看它是如何高效解析數學公式的。

NumExpr

NumExpr的使用及其簡單,只需要將原來的numpy語句使用雙引號框起來,并使用numexpr中的evaluate方法調用即可。

第一步:需要引入 numexpr 和 numpy 擴展包;

/`import numexpr as ne

import numpy as np/`



第二步:創建兩個numpy的array - a 和 b;

a和b兩個所包含的數據個數為100萬個。

當我們需要執行簡單的加減乘除的時候,numexpr的效率已經得到了很好地體現,通過執行 2 * a + 3 * b,如果直接操作,需要3.39 毫秒。但是,如果我們是用ne.evaluate加速,可以將時間縮短至1.55 毫秒。

numexpr在更加復雜的數學表達式運算中,表現到底如何呢?

當我們使用如上所示的數學表達式,正常執行需要28.3 ms。而通過numexpr的加速,只需要3.03 ms。



注意,numexpr是可以識別 sin 函數的,所以我們不需要在evaluate里面寫np.sin,可以直接寫 sin。

總結:處理數據量越大,數學計算越復雜,則numexpr的加速效果越明顯。



numpy 和 numexpr 比較

我們可以看到,當np.array的元素個數超過10e8,加速效果更加顯著。

numexpr也支持邏輯表達式和復數表達式的加速,有興趣的讀者朋友可以自行比較。

numexpr 多線程加速

numexpr還有一個重要的加速利器,多線程操作。通過 ne.set/_num/_threads(1) 可以設置線程的數量,更多的線程表示程序可以同時對數學表達式進行計算。

如上所示,如果我們設置單線程,程序運行需要13.4 ms。設置了雙線程,速度則可以提升一倍。

numexpr對pandas的加速
numexpr的設計主要針對的是numpy。同樣的,我們知道pandas也是基于numpy開發的。自然,numexpr同樣可以被用來對pandas加速。

pandas中有一個eval方法就是運用了numexpr,對pandas代碼進行優化加速。

當我們構建幾個pandas的dataframe,然后對它們進行運算的時候,pd.eval 可以將程序從原先的47.4 ms 加速到17.6 ms。

總結

通過以上的實例,numexpr對于numpy和pandas的加速是很顯著的,尤其當數據量比較大和計算比較復雜的情況下。同時,numexpr的使用非常簡單。但是,我們需要注意的是,任何加速工具都會有局限性的,并不是所有的工作都可以使用numexpr進行加速。

審核編輯 黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器學習
    +關注

    關注

    66

    文章

    8493

    瀏覽量

    134161
  • python
    +關注

    關注

    56

    文章

    4825

    瀏覽量

    86266
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    是否可以為RT1060添加HDMI輸出?

    是否可以為 RT1060 添加 HDMI 輸出?我想支持標準 720p 分辨率并使用圖形加速。
    發表于 04-10 08:04

    的樹莓派跑不快的5個原因!

    盡管最早的RaspberryPi是作為一種廉價設備設計的,目的是讓學生迷上編碼,但超級流行的SBC系列在性能和功能方面已經取得了很大進步。現代RPiSBCs配備了更快的內核、充足的內存和更好的I/O
    的頭像 發表于 03-27 15:44 ?307次閱讀
    <b class='flag-5'>你</b>的樹莓派跑不快的5個原因!

    慧能泰USB PD3.2 Type-C控制器HUSB368介紹

    在當今智能化時代,快充技術發展迅猛。最開始18W、20W就能讓人心動,后來60W、80W都覺得平平無奇,上百瓦才得勁,本以為用上了120W快充就夠快了,沒想到還是難以滿足電動工具、無人機、機器人等新興場景對48V高電壓供電及復雜協議交互的要求。
    的頭像 發表于 03-17 17:02 ?524次閱讀
    慧能泰USB PD3.2 Type-C控制器HUSB368介紹

    DAC7718 AVDD供電可以為15V嗎?

    想請教下DAC7718的供電可以為15V么?
    發表于 11-19 06:25

    想輸入694KHz的時鐘,輸出117.28MHz的時鐘,可以為我推薦一款時鐘芯片嗎?

    我想輸入694KHz的時鐘,輸出117.28MHz的時鐘,可以為我推薦一款時鐘芯片嗎?我看了好多都是輸入最低為5MHz,沒有找到符合前面要求的芯片,求推薦
    發表于 11-08 07:24

    springboot的項目如何既要用jar包啟動,同時還可以為不同的機房設置不同的配置文件

    作者:京東科技 李意文 1、首先先把配置文件從jar中抽離 示例代碼: ? org.apache.maven.plugins maven-jar-plugin 3.2.0 **/spring-xxx.xml ? 2、把抽離的配置文件,放到conf目錄下 利用maven-assembly-plugin,抽取配置文件到conf目錄下, 示例代碼: ? org.apache.maven.plugins maven-assembly-plugin 3.3.0 src/main/assembly/assembly.xml make-assembly package single ? ? ? ? assembly.xml內容如下: assembly zip dir false ${basedir}/src/bin bin 0755 ${project.build.directory}/${project.build.finalName}.jar lib ${basedir}/../xxx/target/classe
    的頭像 發表于 10-19 16:48 ?802次閱讀
    springboot的項目如何既要用jar包啟動,同時<b class='flag-5'>還可以為</b>不同的機房設置不同的配置文件

    可以使用TAS5634做BTL輸出模式,功率在2*100W,負載可以為兩個4歐姆的揚聲器嗎?

    請問我可以使用TAS5634做BTL輸出模式,功率在2*100W,負載可以為兩個4歐姆的揚聲器嗎?因為我看規格書BTL模式只有8歐姆和6歐姆的.
    發表于 10-15 06:52

    請問PGA280的帶寬是多少呀,輸入信號可以為20kHz嗎?

    您好!請問PGA280的帶寬是多少呀,輸入信號可以為20kHz嗎?
    發表于 09-26 06:13

    藍牙人員定位可以為智慧電廠發展解決哪些問題

    電力需求增長放緩,新能源裝機比重不斷提高的產業背景下,搶灘智慧電廠建設成為企業管理新的突破點。隨著新型傳感、物聯網、大數據、虛擬現實、人工智能等新技術的助力,智慧電廠已經進入應用推廣階段。智慧電廠
    的頭像 發表于 09-06 11:42 ?477次閱讀
    藍牙人員定位<b class='flag-5'>可以為</b>智慧電廠發展解決哪些問題

    CyU3PDmaMultiChannelCommitBuffer失敗后,如何使重置速度更快

    。 我遇到的問題是,由于缺乏緩沖內存(主機速度不夠快,因為它必須同時處理多個 CX3 數據流),CX3 有時會丟棄一些幀。 這是我目前使用的內存映射(我優化了一些數據區域,并使用 2 級引導加載器
    發表于 07-23 08:29

    可以為XMC 1400系列微控制器使用哪種集成開發環境?

    我們可以為 XMC 1400 系列微控制器使用哪種集成開發環境?
    發表于 07-22 07:41

    通過I2C PWM IC控制伺服,可以為伺服控制進行高優先級中斷嗎?

    () 大約需要 100 毫秒才能完成請求。 我怎樣才能避免那里的事情。 我可以為伺服控制進行高優先級中斷嗎? 使用 Arduino IDE。
    發表于 07-12 06:20

    使用NumPy實現前饋神經網絡

    要使用NumPy實現一個前饋神經網絡(Feedforward Neural Network),我們需要從基礎開始構建,包括初始化網絡參數、定義激活函數及其導數、實現前向傳播、計算損失函數、以及實現
    的頭像 發表于 07-11 16:30 ?3512次閱讀

    ESP8266在SPI通訊的情況下還可以使用AT指令嗎?

    ESP8266在SPI通訊的情況下還可以使用AT指令嗎?
    發表于 07-09 08:31

    SolidWorks科研版更快地開發產品創意

    在當今競爭激烈的市場環境中,產品創新的速度和質量直接決定了企業的生死存亡。對于科研人員和設計師來說,如何能夠快速、準確地實現產品創意的轉化,是擺在面前的一大挑戰。SolidWorks科研版作為一款
    的頭像 發表于 06-19 16:49 ?449次閱讀
    主站蜘蛛池模板: 天天色天天操综合网 | 毛片网站网址 | 这里只有精品视频 | 夜夜春夜夜夜夜猛噜噜噜噜噜 | 毛色毛片免费观看 | 国产精品久久久久久久久免费观看 | 狠狠色噜噜狠狠狠狠色综合久 | 激情婷婷色 | 成 人 色综合 | 日本免费一区二区老鸭窝 | 天天爽夜夜操 | 亚洲精品一线二线三线 | 国产黄色小视频在线观看 | 欧美日韩国产成人精品 | 四虎精品成人a在线观看 | 精品三级三级三级三级三级 | cijilu刺激 国产免费的 | 色涩在线观看 | 激情五月婷婷色 | 久久视频免费 | 好爽毛片一区二区三区四 | 欧美综合一区二区三区 | 色视频综合| 韩国韩宝贝2020vip福利视频 | 噜噜噜久久 | 亚洲一区在线播放 | 在线观看二区三区午夜 | 国产综合视频在线 | 色狠狠成人综合网 | 热re99久久国产精品 | 免费鲁丝片一级观看 | 伊人久久大香线蕉综合爱婷婷 | 女主播扒开内衣让粉丝看个够 | 色天天综合久久久久综合片 | 亚洲国产丝袜精品一区杨幂 | 成人窝窝午夜看片 | 一级全免费视频播放 | 黄色美女网站免费看 | 国产人成精品免费视频 | 一级午夜免费视频 | 四虎影库在线播放 |