三、实例
fromnumpy.random import rand
x=rand(3,4)
fromnumpy.random import randn
y=randn(3,4)
y
例:一只股票每日预期收益率为0.1%,每日波动率为0.5%,求100日后的预期收益估计
mu=0.1,signa=0.5 如果x服从N(0,1)的正态分布,那么Y=x*signa+mu 服从N(mu,signa)
解:
sigma=0.5
mu=0.1
x=randn(100)
y=sigma*x+mu
y.sum(0) #0表示一个维度
或者:模拟100天100次
x=randn(100,100)
y=sigma*x+mu
ya=y.sum(0)
ya.mean(0)
ya.std(0)
(1)创建一维数组、二维数组,并进行提取数据,排序,切片
importnumpy
#创建一维数组 numpy.array([元素1,元素2,...元素n])
x=numpy.array(['s','d','g','b'])
#提取第二个元素
x[1]
(2)创建二维数组,最外层是第一维度,里层是第二维度
#numpy.array([[元素1,元素2,...,元素n],[元素1,元素2,...,元素n],...,[元素1,元素2,...,元素n]])
y=numpy.array([[1,2,3],[3,2,4],[5,2,1],[6,8,3]])
#提取第二行数据
y[1]
#提取第二列数据的两种方法
y.T[1]
y[:,1]
#提取第三行第三列数据的两种方法
y[2][2]
y[2,2]
(3)数组中每行进行排序
x.sort()
y.sort()
#取数组中的最大值与最小值
y1=y.max()
y2=y.min()
(4)一维数组切片:按照下标取某几行元素 数组[起始下标:最终小标+1]
x1=x[1:3]
x[:]
x[:3]
x[2:]
#二维数组切片
f=y[1:3,1:3]
(5)随机生成几行几列为0的数组
a=numpy.zeros((8,4))
b=numpy.zeros(20)
c=numpy.ones(20)
d=numpy.ones((4,3))
(6)随机数的生成
data=numpy.random.random_integers(1,20,30)#生成随机整数
data=numpy.random.normal(5,1,30)#正态分布的随机数(均值,标准差,个数)
data=numpy.arange(0,200,20)#(起点,终点,步长)
data=numpy.eye(5)#单位矩阵
(7)查看数据类型
data.dtype#数据类型
data.shape#几行几列
data.ndim#几位数组
(8)矩阵点乘
a=np.ones((3,3))
data=np.dot(a.T,a)
(9)常用计算函数
abs(计算绝对值),fads
sqrt(平方根),square(平方的),exp(指数函数),log,log*,loglp
sign,ceiling,floor,modf
isnan(Nota Number),isfinite,isinf
cos,sin,tan,arccos,arcsin,arctan
add(加),substract(减),multiply,divide,power
maximum,minimum,mod,copysign
greater,greater_equal(大于等于),less,less_equal
(10)产生数组
np.meshgrid
np.linspace(start,end,Number)
np.arange(start,end,step)
(11)逻辑操作
np.where(逻辑表达式,a,b) #表达式为真返回a,为假返回b)
(12)统计
sum,mean,std,var
min,max,argmin(返回最大值,对应的是下标),argmax
cumsum(累积和),cumprod(累积的乘积)
data.sum(1)#1表示对行进行求和,0表示对列求和
(13)排序相关
sort(axis)
unique()
(14)随机数生成
numpy.random
简单的随机数据
rand(d0,d1,...,dn)
rand(d0,d1,...,dn)
sigma*np.random.randn(...)+mu
randint(low[,high,size])
random_integers(low[,high,size])
choice(a[,size,replace,p])
(15)排列
shuffle(x)
permutation