Numpy
1、numpy优势:
速度:运算速度快
在哪里:内存分布连续;实现并行化运算。
2、ndarray:
相同类型数据集合;n维数组
(1)属性:a.shape(形状);a.ndim(维度);a.size(元素的数量);a.itemsize(每个元素占得位数);a.flags。
(2)形状:(4,)表示一维数组,有四个元素;(2, 2, 3)表示三维数组,如:b=np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])。
(3)类型:可以指定类型dtype=np.float32
(4)自定义数据结构,如存储学生的姓名身高
mytype=np.array([(‘name’,np.string_,10),(‘height’,np.float64)])
处理复杂类型时用pandas,numpy用于计算。
3、基本操作
(1)创建数组:np.ones([3,4])
从已有的数组a中创建:np.array(a)与np.asarray(a),asarray创建新的数组,而array引用之前的数组。
创建固定范围np.linespace(始,终,个数)(等间隔)和np.arange(始,终,步长)
创建随机数组:均匀分布——np.random.rand(10)\randint(100)\uniform(0,100)
正态分布——方差反应数据的离散程度;创建:np.random.normal(1.75,0.1,[10,10])
(2)案例:随机生成500个股票两年的交易日涨跌幅(符合正态分布)
-
索引:通过下标获取stock_rise_day[0,0:100]
-
修改数组的形状类型:(元素数量匹配)
stock_rise_day.reshape([504,500])没有修改原来的形状
resize修改原来的形状
flatten把所有数据变成一维
-
修改数据类型stock_rise_day.astype(np.int32)
-
修改小数位数np.round(stock_rise_day[0,:100],2)
-
转置ndarray.T
-
arr.tostring()转换成bytes
4、逻辑运算
逻辑判断temp>0.5;赋值temp[temp>0.5]=1
通用函数判断:np.all(temp>0.5)对所有数据进行判断返回True或者Flase
np.unique
复合逻辑运算np.where(np.logical_and(temp>0.5,temp<1),1,0)
np.where(np.logical_or)
5、统计运算
目标:最大值,最小值,平均值,标准差,最大最小值的索引,中位数
np.max(temp,axis=1) axis=1是按行求。
np.std;np.var;np.mean
如果需要统计某一只股票在哪个交易日的涨幅最大或者最小:np.argmax
6、数组间运算
(1)数组跟数
arr+1;arr/2
(2)数组跟数组
广播机制,限制一些数组之间的一些运算操作,方便不同形状的array进行运算。进行运算的数组要满足两个条件:维度相等或者shape(其中相对应的一个地方为1)
用的很少
(3)矩阵运算:机器学习中会经常用到的规则
矩阵就是一种特殊的二维数组(有自己的运算机制)
np.mat(array)默认将传入的数组转化成2维
np.matmul(),矩阵相乘,默认吧数组转化成矩阵
7、合并和分割
np.concatenate([stock1,stock2],axis=1)axis指定按列拼接
np.hstack(列);np.vstack(行)
np.split()均等分