目录
NumPy简介
可以有效进行向量和矩阵运算
前身Numeric 最早是由吉姆·胡格尼尔(Jim Hugunin)与其他协作者共同开发的。2005 年,特拉维斯·奥利芬特(Travis Oliphant)在 Numeric 中结合了另一个同性质的程序库 Numarray的特色,并加人了其他扩展程序而开发了 NumPy。NumPy 是开放源代码的并且由许多协作者共同进行开发并维护。
功能:
(1)可以创建强大的N维数组对象,以此作为通用数据的高效多维容器(multi-dimensional container)
(2)拥有独特的广播(broadcasting)机制,比如针对相同形状的两个数组之间的运算,就可以实现不同数组对应位置元素之间的运算,从而弥补列表运算的不足
(3)拥有实用的线性代数运算、随机抽样等功能。
#导入NumPy模块
import numpy as np
np. _version_ #查看NumPy的版本信息
N维数组
np.array(一个列表)
np.array([列表1,列表2,...,列表m])
注:圆括号中的列表可以是一个由n个元素构成的列表(相当于1xn 的向量),也可以是m个列表(每个列表均包括n个元素)作为元素所成的列表(相当于 mxn 的阵)。
创建N维数组
1.直接输入法
weight_arrayl = np.array([0.15,0.2,0.25,0.4]) #4只股票在投资组合中的配置权重
type(weight_array1) #查看数据结构的类型
weight_arrayl.shape #查看数组的形状
2.将列表转换为数组
weight_list = (0.15, 0.2, 0.25, 0.4)
weight_array2=np.array(weight_list) #将列表转换为一维数组
return_list = [-0.035099, 0.017230, -0.003450, -0.024551, 0.039368, -0.013892, 0.024334,
-0.033758, 0.014622, 0.000128, 0.005848, -0.002907, 0.005831, 0.005797, -0.005764,
0.021242, 0.002133, -0.029803, -0.002743, -0.014301] #以列表格式输入日涨跌幅数据
return_array2 = np.array(return_list) #转换为一维数组
return_array2 = return_array2.reshape(4,5) #转换为4行5列的二维数组
return_array3=return_rray2.ravel() #将二维数组降维至一维数组
3.查看数组的属性
函数名 | 功能 | Python演示 |
---|---|---|
ndim | 查看数组的维度 | weight_array1.ndim 以上输出的数字1代表一维数组,数字2代表二维数组,以此类推 |
size | 查看数组中的元素数量 | weight_array1.size 以上输出数字4表示数组中有4个元素,数字20表示数组由20素组成 |
dtype | 查看数组中的元素类型 | weight_array1.dtype 输出的结果表明元素的数据类型 |
特殊数组
1.整数数列的数组
arange 输出的是个数组
a = np.arange(10) #创建0~9的整数数列
b = np.arange(1, 18, 3) #创建1~18且步长为3的整数数列
2.等差数列的数组
快速创建等差数列的函数 linspace
该函数有3个参数需要输入:第1个参数是数列的起始值,第2个参数是数列的终止值,第3个参数是数列中元素的个数。
c = np.linspace(0, 100, 51) #创建一个0~100元素个数为51的等差数列并且以数组格式存放
3.元素为0的数组
创建一个一维的零数组,数组的元素个数为 8
zero_arrayl = np.zeros(8) #8代表形状参数
创建一个二维的零数组,并且是5x7的数组
zero_array2 = np.zeros((5,7)) #5代表行数、7代表列数
如果已经有一个或若干个数组,同时希望创建与已有数组相同形状的零数组,可以运用zeros_like函数。
zero_weight=np.zeros_like(weight_array1) #创建与weight_array1相同形状的零数组
4.元素为1的数组
ones、ones_like 函数,具体的输入方式与 zeros、zeros like函数类似。
参考书目:《Python的金融分析与风险管理》