numpy的功能:
- 提供数组的矢量化操作,所谓矢量化就是不用循环就能将运算符应用到数组中的每个元素中。
- 提供数学函数应用到每个数组中元素
- 提供线性代数,随机数生成,傅里叶变换等数学模块
numpy数组操作
- numpy.array([],dttype=)生成ndarry数组,dttype指定存储数据类型
- numpy.zeros((3,4))生成指定元素0的3行4列矩阵。
- numpy.reshape((2,2))转换数组阵维数为2行2列
- numpy.arange(4)生成0到3的一行矩阵。
- numpy.dot(a,b)矩阵a,b乘法
- numpy.sum(a,axis=1)axis=1表示在矩阵a的行求和,axis=0表示在列求和
- ndarray.T,ndarray表示数组类型,T表示转置矩阵。
- ndarray.flateen()返回数组元素形成的列表,flat()返回迭代对象。
- numpy.vstack((A,B,C))上下合并矩阵数组A,B,C。
- numpy.hstack((A,B,C))左右合并矩阵数组A,B,C。
- ndarray[:,numpy.newaxis]增加列的维度。对于单行横矩阵,变成单行列矩阵。
- numpy.concatenate((A,B,B,A),axis=0)也是合并矩阵,axis=0表示垂直合并,- axis=1表示水平合并
- numpy.dstack(())深度组合,将互不相干的
- numpy.split(A,2,axis=1)对矩阵数组分割分成两块,axis=1是行分割,axis=0是列分割。等量分割,必须除的断
- numpy.array_split(A,2,axis=1)不等量分割,第一个矩阵占元素较多。
- numpy.vsplit(A,3)纵向分割,hsplit(A,3)横向分割 对于多维,只分割最外维的
- numpy.dsplit()深度分割,突破维数的一列一列的分割
- numpy属性 size元素个数 itemsize元素空间大小 nbytes总空间 T转置 ndim维数 real复数数组的实部,imag复数数组的虚部 flat返回迭代器遍历数组
- numpy.tolist()将数组转换为列表
- numpy.eye(宽高)单位矩阵即对角线为1的二维数组
- numpy.loadtxt(‘data.csv’,delimiter=’,’,)载入csv文件
- numpy.mean()对数组取平均值
- numpy.average()时间加权平均值,最近的数权重大些
- numpy.max()取到数组最大值
- numpy.min()取到数组最小值
- numpy.median()取到数组中位数
- numpy.msort()排序数组
- numpy.var()统计数组的方差
- numpy.diff()返回数组相邻值的差值组成的数组
- numpy.log()得到数组每个元素的对数数组
- numpy.std()数组的标准差
- ndarray.copy()复制
- numpy.dtype()自定义数据类型,接收元组的列表作为参数。()元组第一个是数据名称,第二个是数据类型,第三个指定数据类型长度,创立该类型的数据只要将对应数据元组列表传给array()指定dtype=自定义数据类型
- 利用:或…对多维数组进行切片
- numpy.ravel()输出一个多维数组被抹平成一维数组的视图
- numpy.resize()直接修改数组,而reshape()返回修改后的新数组
- numpy.transpose()转置
- numpy.where(x,date==i)取出符合条件表达式的索引
- numpy.take(x,indices)根据索引数组取出值数组
- numpy.maximum(多个数组)每个数组的最大值组成一个数组
- numpy.convolve()卷积,两个函数相乘,移动窗口均值可以用1/窗口长度组成的数组和原数组作为参数
- numpy.linespace()返回一个元素值在指定范围均匀分布的数组
- ndarray.clip(min,max)返回一个修剪过的数组,比min小的修正为min,比max大的修正为max
- ndarray.compress(条件)返回数组元素经过条件筛选组成的数组
- ndarray.prod计算所有元素的乘积
- numpy.cov()计算两个数组之间的协方差矩阵
- ndarray.trace计算矩阵的迹,即对角线元素之和
- numpy.corrcoef()计算两个数组之间的相关系数
- numpy.ployfit(x=,y=,阶次)对给的数据进行多项式拟合
- numpy.polyval(ployfit拟合的函数,x)进行计算预测
- numpy.polyder(多项式函数)对函数进行求导
- numpy.argmax(函数对象)找出最大值点的x值
- numpy.hanning()加权余弦窗函数进行数据平滑
- numpy.mat(‘1;4;4’)创建矩阵,矩阵的行与行用分号隔开,也可以传入已有矩阵,但是不会创建副本
- .-I属性是逆矩阵
- numpy.matrix(data,copy=False)也是创建矩阵
- numpy.bmat(“矩阵名A 矩阵名B;矩阵名A 矩阵名B;”)通过分块矩阵创建大矩阵
- numpy.remainder(),mod(),%返回两个数组中相除后的余数组成的数组
- numpy.Fmod()余数的正负由被除数决定,与除数无关
通用函数
- numpy.frompyfunc()创建通用函数 生成输入两个参数输出一个参数的ufunc对象,
- np.add.reduce()对数组元素求和
- np.add.accmulate()返回中间结果,返回一步一步求和组成的数组,等价于cumsum()函数
- np.add.reduceat()在某个范围进行求和
- np.add.outer()等于两个输入数组的秩的和
专用函数
- np.bitwise_xor()函数对应异或 bitwise_and对应与 ==对应equal()函数
- np.linalg.inv(A)计算矩阵A的逆矩阵
- np.linalg.solve(A,b)用矩阵对向量b进行线性变换,即求解线性方程组得出系数向量
- np.dot(A,x)点积函数,通过矩阵A与系数向量x点积来验证求解线性方程组是否正确。
线性代数专用函数
- np.linalg.eigvals()计算矩阵的特征值
- np.linalg.eig()返回特征值和对应的特征向量的元组
- np.linalg.svd()分解矩阵为三个矩阵的乘积
- np.linalg.pinv()求解广义逆矩阵
- np.linalg.det(A)计算矩阵的行列式
- np.linalg.fftshift()FFT输出中的直流分量移动到频谱的中央ifftshift()是逆操作
随机数专用函数
- np.random.binomial(最大值,概率,产生数的个数)产生符合二项分布的随机数
- np.random.hypergemotric(普通球数量,倒霉球数量,一次取出个数,个数)超几何分布
- np.random.beta、chisquare、exponential、f、连续分布
- np.random.normal(数量)正态分布随机数
- np.random.lognormal()对数正态分布
数组专用函数
- np.sort()排序 lesort()根据键值对字典进行排序,argsort()返回输入数组排序后的下标
- ndarray.sort()对数组进行原地排序。msort()沿第一个轴进行排序,sort_complex()对复数按照先实部后虚部的顺序进行排序。
- np.searchsorted(数组a,要插入的数组值)计算出不影响数组a的插入位置索引,再通过np.insert(a,索引,插入数组)就不影响原先数组的顺序
- np.extract((a%2==0),a)从a中抽取能被2整除的元素
- np.nonzero(a)抽取非0元素
- np.outer(a数组,b数组)a数组的元素*b数组行,生成二维数组
金融专用函数
- np.fv()计算终值
- np.pv()金融资产当前的价值
- np.npv按折现率计算的净现金流之和
- np.pmt根据本金和利率计算每期需支付的金额
- np.irr 内部收益率净现值为0时的有效利率,不考虑通胀因素
- np.mirr计算修正后内部收益率
窗函数
- np.bartlett()巴特利特窗,三角形平滑窗
- np.blackman()布莱克曼窗,三项余弦函数
- np.hmming()汉明窗,加权余弦函数
数学函数
- np.i0()零阶贝塞尔函数
- np.sinc()1阶贝塞尔函数
测试专用函数
- np.assert_almost_equal(num1,num2,精度(小数点后几位+1))断言进行相等,否则抛出异常
- np.assert_approx_equal(num1,num2,有效数字(小数点后几位))一样的效果
- np.assert_array_almost_equal()断言数组近似相等,前提大小一致,否则抛出异常
- np.assert_array_equal()比较数组的元素是否都相等,允许空值
- np.assert_array_less()比较一个数组每个元素是否大于另一个数组的对应索引的每个元素,抛出异常
numpy中要注意的几个地方:
- 切片不会复制原数组,而是生成原数组的视图,对视图的更改会反映到原数组上。一般的函数都是直接在原数组上进行操作,这样不用复制数组,节省大量时间。