當前位置:
首頁 > 最新 > Python中的向量化編程

Python中的向量化編程

在Andrew Ng的>課程中,多次強調了使用向量化的形式進行編碼,在深度學習課程中,甚至給出了編程原則:儘可能避免使用for循環而採用向量化形式。該課程採用的是matlab/octave語言,所擅長的方向正是數值計算,語言本身內置了對矩陣/向量的支持,比如:

如果變數x是一個數值,那麼a也會得到一個數值結果,如果x是一個矩陣,那麼結果a也是一個矩陣。

但是對於機器學習領域廣為使用的python語言而言,並沒有內置這樣的功能,畢竟python是一門通用語言。好消息是,藉助一些第三方庫,我們也可以很容易的處理向量數值運算。

Numpy是Numerical Python的縮寫,是Python生態系統中高性能科學計算和數據分析所需的基礎軟體包。 它是幾乎所有高級工具(如Pandas和scikit-learn)的基礎。TensorFlow使用NumPy數組作為基礎構建模塊,在這些模塊的基礎上,他們為深度學習任務(大量進行長列表/向量/數值矩陣的線性代數運算)構建了張量對象和圖形流。

許多Numpy運算都是用C實現的,相比Python中的循環,速度上有明顯優勢。所以採用向量化編程,而不是普通的Python循環,最大的優點是提升性能。另外相比Python循環嵌套,採用向量化的代碼顯得更加簡潔。

下面就用一些簡單的示例進行說明:

在我的電腦上運行結果如下:

可見,向量化的實現代碼速度上有飛速提升,而且代碼也看起來更簡潔。

總之,無論你有多長的數據列表並需要對它們進行數學轉換,都強烈考慮將這些Python數據結構(列表或元組或字典)轉換為numpy.ndarray對象並使用固有的矢量化功能。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

用Python爬蟲獲取自己感興趣的博客文章
python3+dlib人臉識別及情緒分析

TAG:Python |