Sargent的量化經濟學(9):NumPy
NumPy
概述
NumPy(https://en.wikipedia.org/wiki/NumPy)是最好的數值編程實驗室。
廣泛應用於學術、金融和行業研究領域
成熟、快速、穩定以及不斷改進完善
本講介紹NumPy數列,以及基礎的數列運算
重要提示
首先,NumPy已經安裝在電腦中
其次,我們會用新命令A@B來指代矩陣乘法,用以取代舊命令np.dot(A,B)
這些程序的運行都要求安裝Python3.5或者Anaconda以上版本
安裝或者升級Anaconda,參考https://lectures.quantecon.org/py/getting_started.html
參考資料
Theofficial NumPy documentation:https://docs.scipy.org/doc/numpy/reference/
NumPy介紹
NumPy所能解決的問題是快速的數組處理
例如,假設我們想創建一個由均勻分布中抽取的一百萬隨機數的數組,並計算其均值
如果在純Python環境中進行運算,計算速度比C或Fortran慢太多
這是因為
Python循環花費很多時間
C和Fortran代碼包含許多種最優化的信息
此時,我們用NumPy,看起來如下
創建數組、計算均值的運算都分發到來自C的最優化機器代碼
一般來說,NumPy將運算批量發送到最優化C和Fortran代碼來處理
其精髓與Matlab類似,即提供一個快速Fortran進程的界面
向量化的建議
NumPy是非常好的向量化工具
向量化操作屬於預編譯進程,像:
矩陣乘法與另一些線性代數進程
創造隨機數的向量
將一種固定的轉換(例如sin或cos)應用於整個數組
NumPy數組
最重要的是NumPy定義是一種數組數據類型,正式格式是numpy.ndarray(https://docs.scipy.org/doc/numpy/reference/arrays.ndarray.html)
為了創建一種NumPy數組,僅僅包含,我們用np.zeros(https://docs.scipy.org/doc/numpy/reference/generated/numpy.zeros.html#numpy.zeros)
NumPy數組有點像原始Python的list,除了
數據必須是同型
這些類型必須是NumPy提供的一種數據類型(dtypes)
這些數據類型最重要的是:
float64: 64 bit floating point number
int64: 64 bit integer
bool: 8 bit True or False
還有一些數據類型代表複數、無符號整數,等
對於當代計算機來說,默認的數組類型是float64
如果我們想要用整數,可以作出如下聲明
在最後的例子中,為了創建2*2數組,我們用zeros()函數,正如z=np.zeros((2,2))
創建數組
正如我們看到的,np.zeros函數創建零數組
你們可能會猜出np.ones所創建的數組
還有一個就是np.empty,
你所看到的這些數值都是無用的
為了創建一個均勻分布的數組,用np.linspace
為了創建單位數組,要麼用np.identity,要麼用np.eye
此外,NumPy數組可以從Python lists,tuple等等中創建,用np.array
也可以見np.asarray
進一步閱讀可參見https://lectures.quantecon.org/py/numpy.html
TAG:宏觀經濟研學會 |
※最輕量化【街霸】: YZF-R3的Street Fighter變形計
※恭喜VIP+RM學員斬獲Numerix紐約量化實習Offer!
※Google Tensorflow Lite 8bit 量化論文
※The North Face 推出輕量化 Mods Coat 雨衣
※Galaxy Watch Active 三星輕量化智能手錶體驗
※AI量化:Python基礎
※DBS Superleggera超輕量化了,而我還是胖的
※Google論文解讀:輕量化卷積神經網路MobileNetV2
※輕量化藝術的傑出之作 Arcteryx Konseal FL接近鞋拼評測
※全新輕量化 Baltoro&Deva開始預售!
※耳機丨「無線、輕量化」Sennheiser CX Sport運動耳機
※Python中的向量化編程
※AJ 輕量化進程再次啟動!AJ20 Flyknit Melo 即將發售
※法國Prodways:DLP批量化和陶瓷3D列印技術詳解
※Python量化自動交易系統vnpy特訓營.東莞站
※俄勒岡州的希臘女神之七:輕量化再次升級,Nike Zoom Kobe 4
※忍者回歸-Nike Air Rift 輕量化再登場
※用深度學習實現自然語言處理:word embedding,單詞向量化
※瞄準邊緣計算,K3S讓Kubernetes部署變得更加輕量化
※惠普推出批量化生產金屬的 3D 列印技術 Metal Jet