您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据挖掘与识别 > Python数据分析基础教程NumPy学习指南
NumPy学习指南总结第2章:Numpy基础创建多维数组#coding:utf-8importnumpyasnpm=np.array([np.arange(2),np.arange(2)])printmprintm.shape一维数组切片和索引#coding:utf-8importnumpyasnpa=np.arange(9)printaprinta[3:7]printa[:7:2]#用下标0-7,以2为步长选取元素多维数组切片和索引#coding:utf-8importnumpyasnpb=np.arange(24).reshape(2,3,4)printbprint'-------------'print'b[0,0,0]',b[0,0,0]print'-------------'print'b[:,0,0]',b[:,0,0]print'-------------'print'b[0]',b[0]print'-------------'print'b[0,1]',b[0,1]print'-------------'print'b[0,1,::2]',b[0,1,::2]#上面数组间隔选取元素print'-------------'print'b[:,1]',b[:,1]print'-------------'print'b[0,:,1]',b[0,:,1]print'-------------'print'b[0,:,-1]',b[0,:,-1]#第一层楼最后一列print'-------------'print'b[0,::-1,-1]',b[0,::-1,-1]#反向选取第一层楼的最后一列的所有房间print'-------------'print'b[0,::2,-1]',b[0,::2,-1]#数组切片中间隔的选定元素print'-------------'print'b[::-1]',b[::-1]#第一层和第二层交换位置改变数组的维度ravel函数可以完成展平操作shape改变维度#coding:utf-8importnumpyasnpb=np.arange(24).reshape(2,3,4)printba=b.ravel()printaa.shape=(6,4)#设置数组维度printa数组的组合np.hstack水平组合np.vstack垂直组合#coding:utf-8importnumpyasnpa=np.arange(9).reshape(3,3)printab=2*aprintbprint'--------------------'printnp.hstack((a,b))#数组水平组合print'--------------------'printnp.vstack((a,b))#垂直组合第3章:常用函数importnumpyasnpi2=np.eye(2)#2*2数组np.savetxt(‘eye.txt’,i2)#存储文件AAPL,28-01-2011,,344.17,344.4,333.53,336.1,21144800#很多数据其中一行...c,v=np.loadtxt(‘data.csv’,delimiter=’,’,usecols=(6,7),unpack=True)#设置分隔符号为,usecols的参数为一个元组,以获取第7字段和第8字段的数据。upack参数设置为True,意思是拆分存储不同列的数据vwap=np.average(c,weights=v)#以v列的数据作为权重计算c的平均权重值np.mean(c)#计算c的平均值时间加权平均价格t=np.arange(len(c))#求出行数np.average(c,weights=t)h,l=np.loadtxt(‘data.csv’,delimiter=’,’,usecols=(4,5),unpack=True)#将每日最高价和最低价的数据载入数组np.max(h)#获取该行最大值np.min(l)#获取该行最小值ptp计算数组的取值范围=max(array)-min(array)np.ptp(h)np.ptp(l)np.median(c)找到中位数np.msort(c)将数组从小到大排序np.var(c)计算数组的方差np.diff(c)返回由相邻数组元素的插值构成的数组np.std()返回数组的标准差np.where(数组0)where函数可以根据指定的条件返回所有满足条件的数组元素的索引值strptime()函数根据指定的格式把一个时间字符串解析为时间元组。converters:数据列和转换函数之间进行映射的字典np.take(数组,索引)获取数组索引值的元素值x=np.array([[1,2],[3,4]])x.ravel()array([1,2,3,4])p52没有完第3章:便捷函数np.corrcoef(bhp_returns,vale_returns)计算两个矩阵的相关系数[[1.0.678417470.678417471.]]右对角线是相关系数poly=np.polyfi(长度,差值,)拟合一系列数据点实际就是一个函数np.polyval(poly,长度+1)推断下一个值vals=np.ployval(poly,t)np.argmax(vals)函数最大值np.argmin(vals)函数最小值np.sign(change)change是数据列表返回对应数据正负号对应列表hanning函数是一个加权余弦的窗函数第5章:矩阵和通用函数a=np.mat('123;456;789')#创建矩阵有空格a.T矩阵转置a.I矩阵求逆A=np.mat(np.arange(9).reshape(3,3))A=np.eye(2)B=2*Anp.bmat('AB;AB')a=np.arange(9)printnp.add.reduce(a)求和结果36a=np.array([2,6,5])b=np.array([1,2,3])printnp.true_divide(a,b)数组相除a=np.arange(-4,4)printa%2[1,1,2,3,5,8,13,21]a=np.matrix([[1,1],[1,0]])创建斐波那契数列矩阵print(a**4)[0,0]为5该数列第5个数第6章:深入学习NumPy模块numpy.linalg模块包含线性代数的函数,使用这个模块可以计算逆矩阵,求特征值,解线性方程组以及求解行列式。求逆矩阵importnumpyasnpA=np.mat('012;103;4-38')printAinverse=np.linalg.inv(A)printinverse求解线性方程组的解#coding:utf-8importnumpyasnpA=np.mat('1-21;02-8;-459')printAb=np.array([0,8,-9])#数组yprintbx=np.linalg.solve(A,b)printxnumpy.linalg模块中,eigvals函数可以计算矩阵的特征值#coding:utf-8importnumpyasnpA=np.mat('3-2;10')printAB=np.linalg.eigvals(A)printBeig函数求解特征值和特征向量#coding:utf-8importnumpyasnpA=np.mat('3-2;10')printAB=np.linalg.eig(A)printB奇异值分解#coding:utf-8importnumpyasnpA=np.mat('41114;87-2')printAU,Sigma,V=np.linalg.svd(A,full_matrices=False)print'U'printUprint'Sigma'printSigmaprint'V'printV并非得到中间的奇异值矩阵,得到的是对角线上的值矩阵行列式#coding:utf-8importnumpyasnpA=np.mat('34;56')printAB=np.linalg.det(A)printB第七章:专用函数sort函数返回排序后的数组lexsort函数根据键值的字典序进行排序argsort函数返回输入数组排序后的下标ndarray类的sort方法可对数组进行原地排序msort函数沿着第一个轴排序sort_complex函数对复数按照先实部后虚部的顺序进行排序argmax函数返回数组中最大值对应下标argmin类似#coding:utf-8importnumpyasnpa=np.array([2,4,8])printnp.argmax(a)searchsorted函数为指定的插入值返回一个在有序数组中的索引位置#coding:utf-8importnumpyasnpa=np.arange(5)printaindices=np.searchsorted(a,[-2,7])printindicesnumpy的extract函数可以根据某个条件从数组中抽取元素。使用nonzero函数抽取数组中的非零元素#coding:utf-8importnumpyasnpa=np.arange(7)printacondition=(a%2)==0print'evennumbers',np.extract(condition,a)print'Nonzero',np.nonzero(a)第9章:使用Matplotlib绘图matplotlib.pyplot包中包含了简单绘图功能使用show函数显示绘制多项式函数#coding:utf-8importnumpyasnpimportmatplotlib.pyplotaspltfunc=np.poly1d(np.array([1,2,3,4]).astype(float))#创建多项式printfuncx=np.linspace(-10,10,30)#在-10和10之间产生30个均匀分布的值y=func(x)#创建多项式的值plt.plot(x,y)#调用plot函数plt.xlabel('x')#使用xlabel函数添加x轴标签plt.ylabel('y(x)')plt.show()微博:小_小_码
本文标题:Python数据分析基础教程NumPy学习指南
链接地址:https://www.777doc.com/doc-3650325 .html