《智能数据分析与应用》 课件 单元3 数据统计_第1页
《智能数据分析与应用》 课件 单元3 数据统计_第2页
《智能数据分析与应用》 课件 单元3 数据统计_第3页
《智能数据分析与应用》 课件 单元3 数据统计_第4页
《智能数据分析与应用》 课件 单元3 数据统计_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ndarray数组3NumPy库介绍NumPy(NumericalPython)是一个由多维数组对象和用于处理这些数组的函数集合组成的库,是Python中最常用的科学计算库。NumPy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。NumPy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。12ndarray数组NumPy中定义的最重要的对象是称为ndarray的n维数组类型它是相同类型的数据集合,可以使用从零开始的索引来访问集合中的数据。ndarray数组1、数组属性在创建数组之前,需要先了解数组的基本属性,数组的属性及其说明如下表。属性名称属性说明ndim返回int,表示数组的维数shape返回tuple,表示数组形状的阵列,对于n行m列的矩阵,形状为(n,m)size返回int,表示数组的元素总数,等于数组形状的乘积dtype返回data-type,表示数组中元素的数据类型itemsize返回int,表示数组的每个元素的大小(以字节为单位),例如,一个元素类型为float64的数组的itemsiz属性值为8(float64占用64个bits,每个字节长度为8,所以64/8,占用8个字节),一个元素类型为complex32的数组的itemsiz属性值为4,即32/82ndarray数组2、数组创建ndarray可以使用NumPy中的数组函数numpy.array创建numpy.array(object,

dtype

=

None,

copy

=

True,

order

=

None,

subok

=

False,

ndmin

=

0)

array函数主要参数及其说明如下表。参数说明object数组或嵌套的数列。dtype数组元素的数据类型,可选。Numpy中的数据类型见表2-2。copy对象是否需要赋值,默认True。order创建数组的样式,C(行)或F(列)或A(任意),默认为A。subok默认情况下,返回一个与基类类型一致的数组。ndmin指定生成数组的最小维度。23数组示例示例1:列表生成ndarray数组importnumpyasnpa=np.array([1,2,3])print('一维数组:',a)b=np.array([[1,2],[3,4]])print('多维数组:',b)c=np.array([1,2,3,4,5],ndmin=3)print('指定最小维度',c)输出结果如下:一维数组:[123]多维数组:[[12][34]]指定最小维度[[[12345]]]数组示例示例2:numpy.arange()numpy.arange:返回一个ndarray对象,该对象包含给定范围内的均匀间隔的值importnumpyasnpx=np.arange(5)print(x)y=np.arange(5,dtype=float)#设置数据类型print(y)z=np.arange(10,20,2)#设置起始值和终止值,步长print(z)输出结果如下:[01234][0.1.2.3.4.][1012141618]3数组示例示例3:ndarray.ndimimportnumpyasnpa=np.arange(24)print(a.ndim)#a现只有一个维度#现在调整其大小b=a.reshape(2,4,3)#b现在拥有三个维度print(b.ndim)输出结果如下:133数组示例示例4:ndarray.shapeimportnumpyasnpa=np.array([[1,2,3],[4,5,6]])print(a.shape)输出结果如下:(2,3)3数组示例示例5:ndarray.reshapeNumPy也提供了reshape函数来调整数组大小importnumpyasnpa=np.array([[1,2,3],[4,5,6]])b=a.reshape(3,2)print(b)输出结果如下:[[1,2][3,4][5,6]]3数组示例示例6:ndarray.itemsizendarray.itemsize以字节的形式返回数组中每一个元素的大小。importnumpyasnp#数组的dtype为int8(一个字节)x=np.array([1,2,3,4,5],dtype=8)print(x.itemsize)#数组的dtype现在为float64(八个字节)y=np.array([1,2,3,4,5],dtype=np.float64)print(y.itemsize)输出结果如下:183数组示例示例7:ndarray.flagsndarray.flags返回ndarray对象的内存信息importnumpyasnpx=np.array([1,2,3,4,5])print(x.flags)输出结果如下:C_CONTIGUOUS:TrueF_CONTIGUOUS:TrueOWNDATA:TrueWRITEABLE:TrueALIGNED:True属性描述C_CONTIGUOUS(C)数据是在一个单一的C风格的连续段中。F_CONTIGUOUS(F)数据是在一个单一的Fortran风格的连续段中。OWNDATA(O)数组拥有它所使用的内存或从另一个对象中借用它。WRITEABLE(W)数据区域可以被写入,将该值设置为False,则数据为只读。ALIGNED(A)数据和所有元素都适当地对齐到硬件上。UPDATEIFCOPY(U)这个数组是其它数组的一个副本,当这个数组被释放时,原数组的内容将被更新。3ThankYOU!NumPy切片与索引3NumPy切片与索引ndarray对象的内容可以通过索引或切片来访问和修改,与Python中list的切片操作一样。ndarray数组可以基于0-n的下标进行索引,切片对象可以通过内置的slice函数,并设置start,stop及step参数进行,从原数组中切割出一个新数组。12切片示例示例1:slice()importnumpyasnpa=np.arange(10)s=slice(2,7,2)#从索引2开始到索引7停止,间隔为2print(a[s])输出结果如下:[246]2数组示例示例2:start:stop:step

切片importnumpyasnpa=np.arange(10)b=a[2:7:2]#从索引2开始到索引7停止,间隔为2print(b)输出结果如下[246]2数组示例示例3:冒号如果只放置一个参数,如

[2],将返回与该索引相对应的单个元素。如果为

[2:],表示从该索引开始以后的所有项都将被提取。如果使用了两个参数,如

[2:7],那么则提取两个索引(不包括停止索引)之间的项。importnumpyasnpa=np.arange(10)#[0123456789]b=a[5]print(b)print(a[2:])print(a[2:5])输出结果如下5[23456789][234]2数组示例示例4:多维数组切片importnumpyasnpa=np.array([[1,2,3],[3,4,5],[4,5,6]])print(a)#从某个索引处开始切割print('从数组索引a[1:]处开始切割')print(a[1:])输出结果如下[[123][345][456]]从数组索引a[1:]处开始切割[[345][456]]2数组示例示例5:省略号切片使选择元组的长度与数组的维度相同。如果在行位置使用省略号,它将返回包含行中元素的ndarray。importnumpyasnpa=np.array([[1,2,3],[4,5,6]])print(a[...,1])#第2列元素print(a[1,...])#第2行元素print(a[...,1:])#第2列及剩下的所有元素输出结果如下[245][345][[23][45][56]]ThankYOU!ndarray数学运算3NumPy的数学运算NumPy的算术函数可以用于执行算术运算函数的输入数组必须具有相同的形状或符合数组广播规则12数学运算示例示例1:加减乘除importnumpyasnpa=np.arange(9).reshape(3,3)b=np.array([10,10,10])print('加法运算:\n',np.add(a,b))print('减法运算:\n',np.subtract(a,b))print('乘法运算:\n',np.multiply(a,b))print('除法运算:\n',np.divide(a,b))输出结果如下:2数学运算示例示例2:numpy.diff()沿着指定轴计算第N维的离散差值importnumpyasnpa=np.array([1,2,4,7,11,16,22])print(np.diff(a))输出结果如下:[123456]2数学运算示例示例3:numpy.mod()返回两个输入数组中相应元素相除后的余数a=np.array([10,20,30])b=np.array([3,5,7])print('第一个数组:',a)print('第二个数组:',b)print('求余数运算0:',np.mod(a,b))print('求余数运算1:',np.remainder(a,b))输出结果如下:第一个数组:[102030]第二个数组:[357]求余数运算0:[102]求余数运算1:[102]2数学运算示例示例4:numpy.reciprocal()返回数组的倒数。对于整数数组中的绝对值大于1的元素,由于Python处理整数除法的方式,结果始终为0。importnumpyasnpnp.seterr(divide='ignore')a=np.array([0,0.25,1/3,1.33,1,100])print('原数组:',a)print('倒数:',np.reciprocal(a))b=np.array([1,2,10,100],dtype=)print(b,'的倒数:',np.reciprocal(b))c=np.array([1,2,10,100],dtype=np.float)print(c,'的倒数:',np.reciprocal(c))输出结果如下:原数组:[0.0.250.333333331.331.100.]倒数:[inf4.3.0.75187971.0.01][1210100]的倒数:[1000][1.2.10.100.]的倒数:[1.0.50.10.01]2数学运算示例示例5:numpy.power()将第一个输入数组中的元素作为底数,将第二个输入数组作为指数,作幂运算。importnumpyasnpa=np.array([10,100,1000])print('数组:',a)print('幂函数:',np.power(a,2))b=np.array([1,2,3])print('幂函数:',np.power(a,b))输出结果如下:数组:[101001000]幂函数:[100100001000000]幂函数:[10100001000000000]2数学运算示例示例6:numpy.sqrt()返回数组的平方根。如果输入数组中有负数,对应的平方根输出为nan。importnumpyasnpa=np.array([0,1,4,9,16,25])print(np.sqrt(a))print(np.sqrt(16))输出结果如下:[0.1.2.3.4.5.]4.02数学运算示例示例7:numpy.amin()和numpy.amax()函数沿指定轴从给定数组中的元素返回最小值或最大值。importnumpyasnpa=np.array([[3,7,5],[8,4,3],[2,4,9]])print('数组:\n',a)print('最小值:',np.amin(a),'最大值:',np.amax(a))print('每行的最小值:',np.amin(a,axis=1))print('每列的最小值:',np.amin(a,axis=0))print('每行的最大值:',np.amax(a,axis=1))print('每列的最大值:',np.amax(a,axis=0))输出结果如下:2数学运算示例示例8:numpy.ptp()返回数组元素最大值和最小值的差importnumpyasnpa=np.array([[3,7,5],[8,4,3],[2,4,9]])print('数组:\n',a)print('最小值:',np.amin(a),'最大值:',np.amax(a))print('最大值与最小值的差:',np.amax(a)-np.amin(a))print('最大值与最小值的差:',np.ptp(a))print(np.amax(a,axis=1)-np.amin(a,axis=1))print(np.ptp(a,axis=1))print(np.amax(a,axis=0)-np.amin(a,axis=0))print(np.ptp(a,axis=0))输出结果如下:2数学运算示例示例9:numpy.median()返回数组的中位数importnumpyasnpa=np.array([[30,65,70],[80,95,10],[50,90,60]])print('数组:\n',a)print('中位数:',np.median(a))print('每行的中位数:',np.median(a,axis=1))print('每列的中位数:',np.median(a,axis=0))输出结果如下:2数学运算示例示例10-1:numpy.mean()numpy.mean():返回数组的算术平均值,可以沿轴计算。importnumpyasnpa=np.array([[1,2,3],[3,4,5],[4,5,6]])print('算术平均值:',np.mean(a))print('每行的算术平均值:',np.mean(a,axis=1))print('每列的算术平均值:',np.mean(a,axis=0))输出结果如下:算术平均值:3.6666666666666665每行的算术平均值:[2.4.5.]每列的算术平均值:[2.666666673.666666674.66666667]2数学运算示例示例10-2:numpy.average()返回数组的加权平均值importnumpyasnpa=np.array([1,2,3,4,5])#不指定权重时相当于mean函数print('算术平均值:',np.mean(a))print('算术平均值:',np.average(a))#指定权重参数wts=np.array([1,2,1,2,1])print('加权平均值:',np.average(a,weights=wts))print('加权平均值以及权重的和:',np.average([1,2,3,4],weights=[4,3,2,1],returned=True))输出结果如下:算术平均值:3.0算术平均值:3.0加权平均值:3.0加权平均值以及权重的和:(2.0,10.0)2数学运算示例示例11:numpy.std()和numpy.var()numpy.var():方差,

mean((x-x.mean())**2)。numpy.std():标准差,是方差的算术平方根。importnumpyasnpa=np.array([1,2,3,4])print('方差:',np.mean((a-np.mean(a))**2))print('方差:',np.var(a))print('标准差:',np.sqrt(np.var(a)))print('标准差:',np.std(a))输出结果如下:方差:1.25方差:1.25标准差:1.118033988749895标准差:1.118033988749895ThankYOU!基于NumPy的股票统计分析3读入股票交易数据01对数据进行统计分析021读入股票交易数据读入股票交易数据

股票市场变化很快,但是通过对历史数据的分析,也能发现一些规律,能对股民起到一定的辅助作用,本案例通过对股票交易中几个指标数据,利用numpy工具进行分析,得到一些新的分析指标。1读入股票交易数据importnumpyasnpparams=dict(fname='Tushare_data.csv',delimiter=',',usecols=(1,2,3,4,5),unpack=True,skiprows=1#这里需要注意的是会转换成float,因此要跳过第一行)openprice,highprice,closeprice,lowprice,volume=np.loadtxt(**params)print(openprice)#开盘价print(highprice)#最高价print(closeprice)#收盘价print(lowprice)#最低价print(volume)#成交量1读入股票交易数据输出结果如下:[9.919.859.910.1210.1810.2810.1310.3810.410.7310.9511.0110.710.4910.0310.][9.9810.0410.0310.1810.4610.5210.5210.3810.5110.7311.0711.3811.3510.8710.6110.24][9.8810.029.839.9710.1510.3510.3810.1510.4310.3510.8210.9711.10.7710.5910.11][9.679.739.79.8510.059.9810.059.9110.0710.0210.4210.8210.6610.289.959.51][371024.72403037.44425117.468867.31416224.09514386.25547808.19562862.94523435.22921904.19738088.69647724.44737837.31648425.25827487.12594674.38]11读入股票交易数据取数据使用了numpy.loadtxt函数,需要传入5个关键字参数:fname是文件名,数据类型为str;delimiter是分隔符,数据类型为str;usecols是读取的列数,数据类型为元组,元组有多少个元素,就读取多少列;unpack是否解包,数据类型为bool;skiprows可选,可以用于跳过第一行,数据类型为int。2对数据进行统计分析2对数据进行统计分析1、计算成交量加权平均价格

成交量加权平均价格(Volume-WeightedAveragePrice,VWAP)是将多笔交易的价格按各自的成交量加权而算出的平均价,结合了成交量与价格动向,用来衡量某个证券交易的平均价格。

print('成交量加权平均价格:',np.average(closeprice,weights=volume))输出结果如下:成交量加权平均价格:10.4261774830465872对数据进行统计分析2、计算股票近期最高价的最大值和最低价的最小值

print('最高价的最大值:',highprice.max())print('最低价的最小值:',lowprice.min())输出结果如下:最高价的最大值:11.38最低价的最小值:9.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论