10.1 Numpy 库
Numpy 库是高性能科学计算和数据分析的基础包,不是Python 的标准库,是时thon 的第三方库。为了更好地讲解,在这里使用JoinQuant(聚宽)量化交易平台免费提供基于IPython Notebook 的研究平台。
10.1.1 ndarray 数组基础
Pyhton 中用列表保存一组值,可将列表当作数组使用。此外, Python有array 模块,但它不支持多维数组,无论是列表还是array 模块都没有科学运算函数,不适合做矩阵等科学计算。因此, Numpy 没有使用Python本身的数组机制,而是提供了ndarray 数组对象,该对象能不断方便地存取数组,而且拥有丰富的数组计算函数,比如向量的加法、减法、乘法等。
使用ndarray 数组,首先需要导入Numpy 函数库。可以直接导入Numpy 函数库,也可以在导入Numpy 函数库时指定导入库的别名,代码如下:

1. 创建Numpy 数组
创建Numpy 数组是进行数组计算的先决条件,可以通过array( )函数定义数组实例对象,其参数为Python 的序列对象(比如列表。)如果想定义多维数组,则传递多层嵌套的序列,代码如下:

成功登录JoinQuant (聚宽)量化交易平台后,单击菜单栏中的"我的策略/投资研究"命令,打开投资研究页面,如图10.1 所示。

单击投资研究页面中的"新建"按钮,弹出下一级子菜单,单击"Python3",就可以新建一个Python3 文件,如图10.2 所示。

在单元格中输入代码如下:

单击工具栏中的
运行按钮,就会显示Numpy 数组内容,并在下方插入一个新的单元格,如图10.3 所示。

创建Numpy 数组,就可以查看Numpy 数组的各种属性,如行数、维数、数据类型等,具体代码如下:
print("Numpy 数组的行数: ", Numpyl.ndim)
print ("Numpy 数组的维数", Numpyl.shape)
print ("Numpy 数组的元素类型: ", Numpyl.dtype)
单击工具栏中的
运行按钮,运行结果如图10.4 所示。

创建Numpy 数组,就可以查看Numpy 数组的各种属性,如行数、维数、数据类型等,具体代码如下:
print("Numpy 数组的行数 ", Numpyl.ndim)
print ("Numpy 数组的维数", Numpyl.shape)
print ("Numpy 数组的元素类型: ", Numpyl.dtype)
单击工具栏中
运行按钮,运行结果如图10.4 所示。

2. Numpy 特殊数组
在Numpy 数组中,有3 种特殊数组,分别是zeros 数组、ones 数组、empty 数组。
zeros 数组是指全零的数组,即数组中所有元素都为0。
ones 数组是指全1 的数组,即数组中所有元素都为1 。
empty 数组是空数组,即数组中所有元素全近似为0 。
下面来讲解特殊Numpy 数组并显示。创建一个Python3 文件,然后输入代码如下:

3. Numpy 序列数组
arange 函数与Python 中arange 函数相似,但它属于Numpy 库,其参数依次为:开始值、结束值、步长。
还可以使用linspace 函数创建等差序列数组,其参数依次为: 开始值、结束值、元素数量。
创建一个Python3 文件,然后输入代码如下:
lmport numpy as np

4. Numpy 数组索引
Numpy 数组的每个元素、每行元素、每列元素都可以用索引访问,不过注意: 索引是从0 开始的,其操作与列表基本相同。
创建一个Python3 文件,然后输入代码如下:

5. Numpy 数组运算
Numpy 数组运算是指Numpy 数组中元素的加、减、乘、除、乘方、最大值、最小值等运算。
创建一个Python3 文件,然后输入代码如下:


6. Numpy 数组复制
Numpy 数组复制分两种,分别是浅复制和深复制。
出复制通过数组变量的复制完成,只复制数组的引用,这样对浅复制数
组中的元素进行修改时,原数组中对应的元素也会被修改。
深复制使用数组对象的copy 方法完成, 是对存储内存进行复制。这样对深复制数组中的元素进行修改时,原数组中对应的元素不会改变。
创建一个Python3 文件,然后输入代码如下:


10.1.2 矩阵
矩阵( Matrix) 是一个按照长方阵列排列的复数或实数集合,是高等数学中的常见工真,也常见于统计分析等应用数学学科中。
Numpy 的矩阵对象与数组对象相似,主要不同之处在于,矩阵对象的计算遵循矩阵数学运算规律,即矩阵的乘、转置、求逆等。需要注意的是,矩阵使用matrix 函数创建。
创建一个Python3 文件,然后输入代码如下:

