為什麼numpy的array那麼快?

來源:互聯網
上載者:User
在python numpy中,如果我用10^6長度隨機產生的list產生numpy array,那麼產生耗時0.1s, 但是得到這個array的mean只需要init的2%的時間。 而我自己implement的array得到mean需要十幾秒。
所以numpy的array十分黑科技是應為:
1)用底層代碼太厲害?
2)init的時候partially compute了某一些中間量?(應為求mean的時間比access慢,比O(n)快 )
如果是2的話能否講一下大概思路(不需要用python O(n)就能得mean)?
感激不禁!

回複內容:

numpy的許多函數不僅是用C實現了,還使用了BLAS(一般Windows下link到MKL的,Linux下link到OpenBLAS)。基本上那些BLAS實現在每種操作上都進行了高度最佳化,例如使用AVX向量指令集,甚至能比你自己用C實現快上許多,更不要說和用Python實現的比。。你用blas試試numpy底層使用BLAS做向量,矩陣運算。像求平均值這種vector operation,很容易使用multi-threading或者vectorization來加速。比如MKL就有很多最佳化。
a=[];s=0;n=1000000from time import*from math import*from random import*st=clock()for i in range(n):a.append(random())for i in a:s=s+iet=clock()print "mean=",s/n,"time=",et-st,"seconds"
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.