量化交易入門筆記-Numpy庫
Numpy 庫是高效能科學計算和資料分析的基礎包,不是 Python 的標準庫,是 Python 的第三方庫。
這裡使用JoinQuant量化交易平臺免費提供的基於 IPython Notebook 的研究平臺
ndarray 陣列基礎
Python 中用列表儲存一組值,可將列表當作陣列使用。此外,Python 有 array 模組,但它不支援多維陣列,無論是列表還是 array 模組都沒有科學運算函式,不適合做矩陣等科學計算。因此,Numpy 沒有使用 Python 本身的陣列機制,而是提供了 ndarray 陣列物件,該物件能不斷方便地存取陣列,而且擁有豐富的陣列計算函式,比如向量的加法、減法、乘法等
首先要匯入 Numpy 庫
# 直接匯入 Numpy 函式庫
import numpy
# 匯入 Numpy 函式庫並指定別名,這個更常用,np是約定好的叫法
import numpy as np
建立 Numpy 陣列
numpy1 = np.array([[10, -8, 10.5], [-4, 6.0, 9.6]])
通過 array() 函式定義陣列例項物件,其引數是 Python 的序列物件(比如列表)
如果想定義多維陣列,則傳遞多層巢狀序列
接下來的示例將在平臺的“我的策略/投資研究”中進行,首先建立一個 Python3檔案
接下來,檢視陣列的行數、維數、資料等屬性
Numpy 特殊陣列
在 Numpy 陣列中,有3種特殊陣列,分別是 zero 陣列、ones 陣列、empty 陣列
通過 np.zeros
建立都是0的陣列,引數中傳一個元組,4表示4行,5表示5列,如下圖:
同理,可以建立全都是1的陣列,這裡建立6行2列:
再建立一個2行5列的空值陣列;不同的是,這裡建立的資料並不都是空的,而都是近似於0的資料
Numpy 序列陣列
arange
函式與 Python 中的 range
函式相似,但它屬於 Numpy 庫,其引數依次為:開始值、結束值、步長
還可以使用 linspace
函式建立等著序列陣列,其引數依次為:開始值、結束值、元素數量
利用arange
函式建立等著序列陣列,這裡指定的開始值為1,結束值為80,步長為4
利用linspace
函式建立等著序列陣列,這裡指定的開始值為1,結束值為3,一共建立13個值(也就是將0到3平均分成13份後的數值)
Numpy 陣列索引
Numpy 陣列的每個元素、每行元素、每列元素都可以通過索引訪問
Numpy 陣列運算
Numpy 陣列運算是指 Numpy 陣列中元素的加、減、乘、除、乘方、最大值、最小值等運算
Numpy 陣列複製
Numpy 陣列複製分兩種,一種是淺複製,一種是深複製
淺複製通過陣列變數的複製完成,只複製陣列的引用,這樣對淺複製陣列中的元素進行修改時,原陣列中對應的元素也會被修改
深複製使用陣列物件的copy
方法完成,是對儲存記憶體進行復制。這樣對深 複製陣列中的元素進行修改時,原陣列中對應的元素不會改變
淺複製:
深複製:
矩陣
**矩陣(Matrix)**是一個按照長方陣列排列的複數或實數集合,是高等數學中的常見工具,也常見於統計分析等應用數學學科中
Numpy 的矩陣物件與陣列物件相似,主要不同之處在於,矩陣物件的計算遵循矩陣數學運算規律,即矩陣的乘、轉置、示逆等。需要注意的是,矩陣使用 matrix
函式建立
注:本文章為個人學習筆記,參考了一些書籍與官方教程,不作任何商業用途!