金融量化 - numpy 教程


咱們須要瞭解一下 numpy 的應用場景
web


NumPy提供了大量的數值編程工具,能夠方便地處理向量、矩陣等運算,極大地便利了人們在科學計算方面的工做。另外一方面,Python是免費,相比於花費高額的費用使用Matlab,NumPy的出現使Python獲得了更多人的青睞
編程


查看 numpy 版本
數組


import numpy
numpy.version.full_version


數組
微信


NumPy中的基本對象是同類型的多維數組(homogeneous multidimensional array),這和C++中的數組是一致的,例如字符型和數值型就不可共存於同一個數組中。先上例子dom


a = numpy.arange(20)


經過函數reshape,咱們能夠從新構造一下這個數組,例如,咱們能夠構造一個4*5的二維數組,其中reshape的參數表示各維度的大小,且按各維順序排列(兩維時就是按行排列,這和R中按列是不一樣的):
ide


a = a.reshape(4,5)


構造更高維的也沒問題:函數


a = a.reshape(2,2,5)


既然aarray,咱們還能夠調用array的函數進一步查看a的相關屬性:ndim查看維度;shape查看各維度的大小;size查看所有的元素個數,等於各維度大小的乘積;dtype可查看元素類型;dsize查看元素佔位(bytes)大小工具



建立數組
spa


數組的建立可經過轉換列表實現,高維數組可經過轉換嵌套列表實現:.net


raw = [0,1,2,3,4]
a = numpy.array(raw)


raw = [[0,1,2,3,4], [5,6,7,8,9]]
b = numpy.array(raw)


一些特殊的數組有特別定製的命令生成,如4*5的全零矩陣:


d = (4, 5)
numpy.zeros(d)


默認生成的類型是浮點型,能夠經過指定類型改成整型:


d = (4, 5)
numpy.ones(d, dtype=int)



[0, 1)區間的隨機數數組:


numpy.random.rand(5)


數組操做


簡單的四則運算已經重載過了,所有的+-*/運算都是基於所有的數組元素的,以加法爲例:



相似C++,+=-=*=/=操做符在NumPy中一樣支持:



開根號求指數也很容易:



須要知道二維數組的最大最小值怎麼辦?想計算所有元素的和、按行求和、按列求和怎麼辦?for循環嗎?不,NumPy的ndarray類已經作好函數了:



數組元素訪問


數組和矩陣元素的訪問可經過下標進行,如下均以二維數組(或矩陣)爲例:



能夠經過下標訪問來修改數組元素的值:



如今問題來了,明明改的是a[0][1],怎麼連b[0][1]也跟着變了?這個陷阱在Python編程中很容易碰上,其緣由在於Python不是真正將a複製一份給b,而是將b指到了a對應數據的內存地址上。想要真正的複製一份ab,能夠使用copy



若對a從新賦值,即將a指到其餘地址上,b仍在原來的地址上:



利用:能夠訪問到某一維的所有數據,例如取矩陣中的指定列:



數組操做


仍是拿矩陣(或二維數組)做爲例子,首先來看矩陣轉置:



矩陣求逆:



求特徵值和特徵向量



按列拼接兩個向量成一個矩陣:



在循環處理某些數據獲得結果後,將結果拼接成一個矩陣是十分有用的,能夠經過vstackhstack完成:



缺失值


缺失值在分析中也是信息的一種,NumPy提供nan做爲缺失值的記錄,經過isnan斷定。



nan_to_num可用來將nan替換成0,在後面會介紹到的更高級的模塊pandas時,咱們將看到pandas提供能指定nan替換值的函數。



NumPy還有不少的函數,想詳細瞭解可參考連接 http://wiki.scipy.org/Numpy_Example_List 和 http://docs.scipy.org/doc/numpy

最後獻上NumPy SciPy Pandas Cheat Sheet



本文分享自微信公衆號 - 人生代碼(lijinwen1996329ken)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索