版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python金融数据分析与挖掘实战课程教案
广西民族师范学院XXX
论
理
学
教实验
教学内容课外实验
时
序号学实验(实践)内容
学时
1第1章Python基本30本章练习
2第2章科学计算包Numpy52本章练习
3第3章数据处理包Pandas52本章练习
4第4章数据可视化包Malplollib52本章练习
5第5章机器学习包Scikit-leam168本章练习
6第6章关联规则基本知识52本章练习
7第7章基本案例154本章练习综合实训1
8第8章上市公司综合评价94本章练习综合实训2
9第9章股票价格涨跌趋势预测124本章练习综合实训3
第10章股票价格形态聚类与收益分
10124本章练习综合实训4
析
11第11章行业联动与轮动分析124本章练习综合实训5
合计10242
第1章Python基本
授课方式:机房数学,讲授+实验,
教学重点:Python发行版Anaconda地安装与启动,Spyder集成开发工具地使用与Python扩
展包地安装方法;Python基本语法,数据类型,数据结构与主要方法;循环,条件语句,函数定义与
应用。
教学难点:数据结构与主要方法,循环语句,条件语句
实验题目:本章课后练习
教学内容:
1.1Python概述(简要略讲)
1.21.2Python安装与启动(简要介绍,然后让学生自己动手搭建环境)
1.2.1Python安装
1.2.2Python启动与界面认识(教师边演示边讲解)
1.3Python扩展包安装
1.3.1在线安装(边演示边讲解)
1.3.2离线安装(学生自学)
1.4Python基本数据类型与数据结构
Python基本数据类型包含数值,字符串,而列表,元组,集合,字典称为数据容器或者数据结
构。
1.4.1数值地定义
数值在现实应用中最为广泛,常见地数值包含整型数据与浮点型数据。整型数据常用来
表示整数,如0,1,2,3,1002…;浮点型数据用来表示实数,如L014.24.3o布尔型数据可以看成
是一种特殊地整型,只有True与False,分别对应整型地1与0。示例代码如下:
nl=2¥整型
n2=1.3#浮点型
n3=float(2)#转换为浮点型
t=True¥布尔真
f=False#布尔假
n4=t==l
n5=f==0
1.4.2字符串地定义
字符串主要用来表示文本数据类型,字符串中地字符可以是数值,ASCII字符,各种符号。
字符串地定义可以用一对单引号或者一对三引号括起来。示例代码如下:
sl=,1234,
s2='''helloword!**'
s3=*ILikepython,
1.4.3列表地定义
列表作为Python中地一种数据结构,可以存放不同类型地数据,川中括号括起来进行定
义。示例代码如下:
Ll=[l,2,3,4,5,6]
L2=[l,2,'HE',3,5]
L3=['KJ\'CK\'HELLO1]
1.4.4元组地定义
元组与列表类似,也是Python中一种常用地数据结构,不同之处在于元组中地元素不能
修改,元组采用圆括号括起来进行定义。示例代码如下:
11=(1,2,3,4,6)
t2=(l,2,'kl')
t3=(,hl,,'h2','h3')
1.4.5集合地定义
集合也是Python中地数据结构,它是一种不重复元素地序列,用大括号括起来进行定义。
示例代码如下:
Jl={l,«h',2,3r9}
J2={l,*h',2,3,9,2)
J3={'KR\'LY\'SE'}
J4={,KR,,'LY\'SE\'SE'}
print(JI)
print(J2)
print(J3)
print(J4)
执行结果如下:
{1,2,3,9}
{1,2,3,'h\9)
{'LY\•SE','KR'}
{•LY','KR')
从执行结果可以看出,集合保持了元素地唯一性,对于重复地元素只取一个。
1.4.6字典地定义
字典是Python中一种按键值定义地数据结构,其中键必须唯一,但值不必。字典用大括号
括起来进行定义。字典中地元素由键与值两部分组成,键在前值在后,键与值之间用冒号(:)来
区分,元素之间用逗号隔开。键可以是数值,字符,值可以是数值,字符或者其它Python数据结
构(比如列表,元组)。示例代码如下:
,,,
dl={l:h\2:[l,2,k],3:9)
,
d2={'a':2Z•b*:ky*}
d3-{'ql':[90,100],,k2,:,kkk')
1.5Python相关地公有方法
Python地公有方法是指Python中大部分地数据结构均可以通用地一种数据操作方法。
下面主要介绍索引,切片,求长度,统计,成员身份确认,变量删除常用地数据操作方法
1.5.1索引
索引即通过下标位置定位来访问指定数据类型变量地值,示例代脩如下:
s3=*ILikepython,
Ll=[l,2,3,4,5,6]
t2=(l,2,«kl')
dl={l:'h',2:[1,2Jk,],3:9}
d3={•ql*:[90,100],^2*:'kkk*)
Print(s3[0],s3[l],Ll[0],t2[2],dl[3]/d3['k2'])
print(*-**40)
执行结果如下:
I1kl9kkk
事实上,字符串,列表,元组均可以通过其下标地位置访问元素,注意下标从0开始。字典则
是通过其键值来访问元素。printC」*40)表示输出40个符号,注意print函数输出内容要
用小括号括起来。需求说明地是,集合类型数据结构,不支持索引访问。
1.5.2切片
切片是指定索引位置,对数据实现分块访问或提取地一种数据操作方式,在数据处理中具
有广泛地应用。下面简单介绍字符串,列表,元组地切片方法,示例代码如下:
s2=,''helloword!*1'
L2=[l,2,'HE«,3,5]
t2=(lz2/*kl')
s21=s2[0:]
s22=s2[0:4]
s23=s2[:]
s24=s2[l:6:2]
L21=L2[1:3]
L22-L2[2:]
L23=L2[:]
t21=t2[0:2]
t22=t2[:]
print(s21)
print(s22)
print(s23)
print(524)
print(L21)
print(L22)
print(L23)
print(t21)
print(t22)
执行结果如下:
helloword!
hell
helloword!
el
[2,'HE']
['HE',3,5]
[b2,'HE\3,5]
32)
(1,2,1kl1)
字符串地切片,针对字符串中地每个字符进行操作;列表,元组地切片,则是针对其中地元
素。切片地方式为:开始索引位置一结束索引位置+1。注意开始索引从。开始,如果省掉开
始索引位置或结束索引位置,则默认为0或者最后地索引位置。
1.5.3长度
字符串地长度为字符串中所有字符地个数,空格也算一个字符;列表,元组,集合地长度,即
为元素地个数;字典地长度为犍地个数。求变量数据地长度在程序编写中经常用到,Python中
提供了一个函数len()来实现,示例代码如下:
s3=*ILikepython,
—23,4,5,6]
t2=(l,2,«kl')
J2={1Jh,,2,3,9}
dl={l:'h',2:[1,2
kl=len(s3)
k2=len(Ll)
k3=len(t2)
k4=len(J2)
k5=len(dl)
1.5.4统计
统计包含求最大值,最小值,求与,可以是列表,元组,字符串,示例代码如下:
Ll=[l,2,3,4,5,6]
tl=(l,2,3,4,6)
s2=*''helloword!**'
ml=max(LI)
m2=max(tl)
m3=min(LI)
m4=sum(tl)
m5=max(s2)
1.5.5成员身份
成员身份地确认,使用in命令用来判断某个元素是否属于指定地数据结构变量。示例代
码如下:
Ll=[l,2,3,4,5,6]
tl=(l,2,3,4,6)
S2=«''helloword!'•'
J2={1,,hl2,3,9JSE,}
zl='I'ins2
z2=,kj'inLI
z3=2intl
z4=,SE,inJ2
1.5.6变量删除
程序运行过程中,存在大量地中间变量,这些变量一来占用空间,二来影响可读性,可以使
用del命令删除不必要地中间变量。示例代码如下:
a=(l,2,3,4];
b='srt'
C={1:4Z2:7,3:8Z4:9}
dela,b
执行该程序代码,删除了a,b两个变量,而变量c保留。
1.6列表,元组,字符串与字典方法
1.6.1列表方法
这里主要介绍列表中一些常用地方法,包含空列表地产生,向列表中添加元素,列表扩展,
列表中元素地统计,返回列表中地index下标,删除列表元素,对列表进行排序。为方便说明相
关方法地应用,下面定义几个列表,示例代码如下:
Ll=[l,2,3,4,5,6]
L2=[l,2,•HE1,3,5)
L3=['KJ\'CK\'HELLO']
14=[1,4,2,3,8,4,7]
1.创建空列表:list()
在Python中,用list函数创建空地列表,也可以用“口”来定义。在程序编写过程中,预定
义变量是常见地,其中列表就是其中一种常见地方式。示例代码如下:
L=list()#产生空列表L
L=[]#也可以用〔)来产生空列表
2.添加元素:append()
可以利用append函数依次向列表中添加元素。示例代码如下:
Ll-appendCH1)#向L1列表增加元素<H>
print(LI)
fortinL2:#利用循球,将L2中地元素,依次顺序添加到前面新建地空列表L中
L.append(t)
print(L)
执行结果如下:
[b2,3,4,5,6,'H'J
[1,2,'HE\3,5]
3.扩展列表:extend()
与append函数不同,extend函数在列表后面添加整个列表。示例代码如下:
Ll.extend(L2)#在前面地L1基本上,添加整个L2至其后面
print(L1)
执行结果如下:
[1,2,3,4,5,6,'Hl1,2,'HE\3,5]
4.元素数:count()
可以利用count函数统计列表中某个元素出现地次数,示例代码如下:
print「元素2出现地次数为:\L1.count(2))
执行结果如下:
元素2出现地次数为:2
需求说明地是,这里地L1是在添加了L2列表之后更新地列表。
5.返回下标:index()
在列表中,可以通过index函数返回元素地下标。示例代码如下:
print地索引下标为:\LI.index('H»))
执行结果如下:
H地索引下标为:6
6.删除元素:remove()
在列表中,可以通过remove函数删除某个元素。示例代码如下:
Ll.removeCHE*)#删除HE兀素
print(Ll)
执行结果如下:
[1,2,3,4,5,6,'Hl1,2,3,5]
7.元素排序:sort()
可以通过sort函数而列表元素进行排序,按升序排序。示例代码如下:
L4.sort()
print(L4)
执行结果如下:
L2,3,4,4,1,8]
特别说明地是,列表中地元素可以修改,但是元组中地元素不能修改。示例代码如下:
L4[2]=10
print(L4)
执行结果如下:
[1,2,10,4,4,1,8]
而以下示例程序则会报错:
t=(l,2,3,4)
t[2]=104报错
1.6.2元组方法
元组作为Python地一种数据结构,与列表有相似之处,其最大地区别是列表地元素可以
修改,而元组中地元素不能修改。本节主要介绍元组中几个常用地方法,包含空元组地产生,
元组元素统计,返回元组元素index下标与元组地连接。下面通过定义两个元组T1与T2,对元
组中地常用方法进行说明。
Tl=(l,2,2,4,5)
T2=('H2\3,,KL,)
1.创建空元组:tuple()
通过tuple函数,可以创建空元组。示例代码如下:
tl=tuple()#产生空元组
t=()4产生空元组
2.元素计数:count()
通过count困数,可以统计兀组中某个兀素出现地次数。示例代码如卜:
print「元素2出现地次数为:•,T1.count(2))
执行结果如下:
元素2出现地次数为:2
3.返回下标:index。
与列表类似,通过index函数,可以返回元组某个元素地索引下标。示例代码如下:
print「KL地下标索引为:',T2.index(•KL*))
执行结果如下:
KL地下标索引为:2
4.元组连接
两个元组地连接,可以直接用“+”号来完成。示例代码如下:
T3=T1+T2
print(T3)
执行结果如下:
32,2,4,5,'H2'z3,'KL')
1.6.3字符串方法
字符串作为基本地数据类型,也可以看作一种特殊地数据结构。在字符串地操作,是数据
处理,编程过程中必不可少地环节,下面介绍几种常见地字符串处理方法,包含空字符串地产
生,字符串地查找,字符串地替换,字符串地连接与比较。
1.创建空字符串:str()
通过str函数,可以创建空地字符串。示例代码如下:
S=str()#产生空字符串
2.查找子串:find()
用find函数查找子串出现地开始索引位置,如果没有找到则返回-1。示例代码如下:
st=*helloword!*
zl=st.find(1he1,0,len(st))会返回包含子串地开始索引位置,否则T
z2=st.find(*he,,1,len(st))
print(zl,z2)
执行结果为:
0-1
其中find函数第一个参数为需求查找地子串,第二个参数是待查字符串指定地开始位置,
第三个参数为指定待查字符串地长度。
3.替换子串:replace()
通过replace函数,可以替换指定地子串。示例代码如下:
stt=st.replace('or*,*kl1)#原来地st不变
print(stt)
print(st)
执行结果如下:
hellowkld!
helloword!
其中replace函数第一参数为被替换子串,第二个参数为替换子串,
4.字符串连接
字符串地连接,可以通过来实现.示例代码如下:
stl='joh*
st2=stl+‘*+st
print(st2)
执行结果如下:
johhelloword!
5.字符串比较
字符串地比较也很简单,可以直接通过号或不号“==","!=”来进行判断。示例代码如
下:
strl='jo,
str2='qb'
str3='qb'
sl=5trl!»str2
s2=str2==str3
print(si,s2)
执行结果如下:
TrueTrue
1.6.4字典方法
字典作为Python中非常重要地一种数据结构,在编程中应用极为广泛,特别是与第3章中
地数据框进行灵活转换并实现数据处理是一种非常重要地编程技能。不小节主要介绍字典中
几个常用地方法,包含字典地定义,字典取值,字典赋值。
1.创建字典:dict()
通过diet函数,可以创建字典,也可以将嵌套列表转换为字典。示例代码如下:
d=dict()¥产生空字典
D={}#产生空字典
#嵌套色素为元组
list2=[['a'/-ok'],['b'z'Ik']/[3,'1k']]#嵌套元素为列表
dl=dict(listl)
d2=dict(list2)
print(*d=:\d)
print(1D=:',D)
print('dl=:*,dl)
print(*d2=:*,d2)
执行结果如下:
d={}
D=()
11,,
dl={0:'ok,'I:•lk'z'0011:lk)
d2={'a':'ok','b1:'lk‘,3:'Ik'}
2.获取字典值:get()
通过get方法,可以获取对应键地值。示例代码如下:
print(d2.get('b*))
输出结果如下:
1k
3.字典赋值:setdefault()
通过setdefault方法,可以对预定义地空字典进行赋值。示例代码如下:
d.setdefault('a*,0)
D.setdefault('b*,[1,2,3,4,5])
print(d)
print(D)
执行结果如下:
{0:0}
Cb':[1,2,3,4,5]}
1.7条件语句
条件判断语句,是指满足某些条件,才能做某件事情,而不满足条件时是不允许做地。条件
语句在各类编程语言中均作为基本地语法或者基本语句使用,Python语言也不例外。这里主
要介绍if…卅…else…,if…elif…else…3种条件语句形式。
1.7.1if…语句
条件语句if…,其使用方式如下:
if条件:
执行代码块
注意条件后面地冒号(英文格式输入),同时执行代码块均需求缩进并对齐。示例代码
如下:
x=10
importmath¥导入数学函数库
ifx>0:芋冒号
s=math.sqrt(x)#求平方根,缩进
print(*s=',s)去打印结果,缩进
执行结果如下:
s=3.1622776601683795
1.7.2if…else…语句
条件分支语句if…else…,其使用方式如下:
if条件:
执行语句块
else:
执行语句块
同样需求注意冒号与缩进对齐语法。示例代码如下:
x=-10
importmath^导入数学函数库
ifx>0:*冒号
s=math.sqrt(x)#求平方根,缩进
print('s=',s)#打印结果,缩进
else:
s=,负数不能求平方根,*提示语,缩进
print(*s=',s)#打印结果,缩进
执行结果如下:
s=负数不能求平方根
1.7.3if•••eIif…eIse…语句
条件分支语句if…elif…else…用法如下:
if条件:
执行语句块
elif条件:
执行语句块
else:
执行语句块
同样,需求注意冒号与缩进对齐这两种语法。示例代码如下:
weather=•sunny1
ifweather=='sunny':
print(11shopping'1)
elifweather==*cloudy':
print("playingfootball")
else:
print("donothing")
执行结果如下:
shopping
1.8循环语句
循环语句,即循环地执行某一个过程或者一段程序代码地语句.与其它语言类似,在
Python语言中,主要有while与for两种循环语句方式。与其它语言不同地是,Python中地循
环语句也通过缩进语法来区分执行地循环语句块。
1.8.1while语句
循环语句while,其使用方式如下:
while条件:
执行语句块
注意执行语句块中地程序全部都要缩进并对齐。一般while循环需求预定义条件变量,
当满足条件地时候,循环执行语句块地内容。以求1到100地与为例,兴用while循环实现,示
例代码如下:
t=100
s=0
whilet:
s=s+t
t=t-l
print('s=1,s)
执行结果如下:
s=5050
1.8.2for循环
循环语句for使用方式如下:
for变量in序列:
执行语句块
注意执行语句块中地程序全部需求缩进并对齐,其中序列为任意序列,可以是数组,列表,
元组。示例代码如下:
listl=list()
list2=list0
list3=list()
forainrange(10):
listl.append(a)
fortin['a1,'b',1c*,'d']:
list2.append(t)
forqin(*k*,*j',*p'):
list3.append(q)
print(listl)
print(list2)
print(list3)
执行结果如下:
[0,1,2,3,4,5,6,1,Sz9]
[•a\3,,c',d)
['k\少,|p']
示例程序首先创建了3个空列表listl,Iist2与Iist3,通过for循环地方式,依次将循环序列
中地元素添加到预定义地空列表中。
1.9函数
在实际开发应用中,如果若干段程序代码实现逻辑相同,那么可以考虑将这些代码定义为
函数地形式。下面我们介绍无返回值函数,有一个返回值函数与有多个返回值函数地定义与
调用方法。
1.9.1无返回值函数地定义与调用
无返回值函数地定义格式如下:
def函数名(输入参数):
函数体
注意冒号与缩进,函数体中地程序均需求缩进并对齐。示例代码如下:
#定义函数
defsumt(t):
s=0
whilet:
s=s+t
t=t-l
#调用函数并打印结果
s=sumt(50)
print(s)
执行结果如下:
None
执行结果为None,表示没有任何结果,因为该函数没有任何返回值。
1.9.2有返回值函数地定义与调用
有返回俏地函数定义如下:
def函数名称(输入参数):
函数体
return返回变量
示例代码如下:
#定义函数
defsumt(t):
s=0
whilet:
s=s+t
t=t-l
returns
#调用函数并打印结果
s=sumt(50)
print(s)
执行结果如下:
1275
该示例程序仅仅是在第191小节无返叵I值函数定义地基本上,增加了返回值。
1.9.3有多返回值函数地定义与调用
多返回值函数,可以用一个元组来存放返回结果,元组中地元素数据类型可以不相同,其
定义如下:
def函数名称(输入参数):
函数体
return(返回变量1,返回变量2,…)
示例代码如下:
#定义函数
deftest(r):
importmath
s=math.pi*r**2
c=2*math.pi*r
L»(s,c)
D=[s,czL]
return(s,c,L,D)
件调用函数并打印结果
v=test(10)
s=v[0]
c=v[1]
L=v[2]
D=v[3]
print(s)
print(c)
print(L)
print(D)
执行结果如下:
314.1592653589793
62.83185307179586
(314.1592653589793,62.83185307179586)
[314.1592653589793,62.83185307179586,(314.1592653589793,62.83185307179586)]
本章小结
本章作为Python地基本知识部分,首先介绍了Python与其发行版Anaconda地安装与启
动,集成开发工具Spyder地基本使用方法与查看Anaconda集成地Python包与安装新扩展包
地方法;其次介绍了Python基本语法,包含数值,字符串,列表,元组,字典与集合Python基本数
据类型,以与其公有方法与私有方法;在流程控制语句方面,介绍了条件语句与循环语句;在
Python自定义函数方面,介绍了无返回值函数,有一个返回值与多个返回值函数地定义与调用
方法。
本章练习
1.创建一个Python脚本,命名为testl.py,实现以下功能:
(1)定义一个元组tl=(l,2尔;py/Matlab,)与一个空列表listl;
(2)以while循环地方式,用append。函数依次向listl中添加tl中地元素;
(3)定义一个空字典,命名为dictl;
<4)定义个嵌套列表口工牝[3,4,5],(1,2,6),18,50],采用for循环地方式,用setdefault()函
数依次将Li中地元素添加到dictl中,其中Li元素对应地键依次为a,b,c,d,e。
2.创建一个Python脚本,命名为test2.py,实现以下功能:
(1)定义一个函数,用于计算圆柱体地表面积,体积,函数名为put,输入参数为r(底半
径),h(高),返回值为S(表面积),V(体积),返回多值地函数,可以用元组来表示。
(2)调用定义地函数put,计算底半径(r)=10,高(h)=11地圆柱体表面积与体积,并输
出其结果。
第2章科学计算包Numpy
授课方式:机房教学,讲授+实验,
教学重点:数组地创建,运算,切片,连接与存取。
教学难点:数组切片地理解
实验题目:本章课后练习
教学内容:
2.1Numpy简介(简要介绍)
Numpy是Python用于科学计算地基本包,也是大量Python数学与科学计算包地基本,不
少数据处理与分析包都是在Numpy基本上开发地,如后面介绍地Pandas包。Numpy地核心
基本是ndarray(N-dimensionalarray,N维数组),即由数据类型相同地元素组成地N维数组。
本章主要介绍一维数组与二维数纽,包含数组地创建,运算,切片,连接,数据存取与矩阵与线性
代数运算,它与Matlab地向量与矩阵使用非常相似。
在Anaconda发行版中,Numpy包已集成在系统中,无须另外安装。
2.2创建数组
本节主要介绍两种创建数组地方法,一种是利用Numpy中地array函数将特定地数据类
型转换为数组,另种是利用内置函数创建指定尺寸地数组。
2.2.1利用array。函数创建数组
基于array。函数,可以将列表,元组,嵌套列表,嵌套元组给定地数据结构转化为数组。值得
注意地是,利用array函数之前,要导入Numpy。示例代码如下:
#1.先预定义列表dl,元组d2,嵌套列表d3,d4与嵌套元组d5
dl=(l,2,3,4,0.1,7]例表
d2-(l,2,3,4,2.3)中元组
#嵌套列表,元素为列表
d3=[(l/2/3,4]r[5,6,7,8]]
d4=[(l,2,3,4),(5,6,7,8)]#嵌套列表,元素为元组
d5=((l,2,3,4),(5,6,7,8))林湎
#2.导入Numpy,并调用其中地arrya函数,创建数组
importnumpyasnp
dll=np.array(dl)
d21»np.array(d2)
d31=np.array(d3)
d41=np.array(d4)
d51=np.array(d5)
#3.fflj除dl,d2,d3,d4,d5变量
deldl,d2,d3,d4,d5
2.2.2利用内置函数创建数组
利用内置函数,可以创建一些特殊地数组。例如,可以利用ones(n,m)函数创建n行m列
元素全为1地数组,利用zeros(n,m)函数创建n行m列元素全为0地数组,利用arange(a,b,c)
创建以a为初始值,b-1为末值,c为步长地一维数组。其中a与c参数可省,这时a取默认值
为0,c取默认值为1。示例代码如下:
zl=np.ones((3,3))件创建3行3列元素全为1地数组
z2=np.zeros((3,4))#创建3行4列元素全为0地数组
z3=np.arange(10)会创建默认初始值为0,默认步长为1,末值为9地一维数组
z4=np.arange(2,10),创建默认初始值为2,默认步长为1,末值为9地一维数组
z5=np.arange(2,10,2)#创建默认初始值为2,步长为2,末值为9地一维数组
2.3数组尺寸
数组尺寸,也称为数组地大小,通过行数与列数来表现。通过数组中地shape属性,可以返
回数组地尺寸,其返回值为元组。如果是一维数组,返回地元组中仅一个元素,代表这个数组地
长度。如果是二维数组,元组中有两个值,第一个值代表数组地行数,第二个值代表数组地列
数。示例代码如下:
#列表
d3=Ul,2,3,4J,[5,6,7,8”#嵌套列表,元素为列表
importnumpyasnp
dll=np.array(dl)#将dl列表转换为一维数组,结果赋值给变量dll
d31=np.array(d3)#将d3嵌套列表转换为二维数组,结果赋值给变量d31
deldlzd3#删除dl,d3
sll=dll.shape¥返回一维数组dl1地尺寸,结果赋值给变量s11
s31=d31.shape#返回二维数组d31地尺寸,结果赋值给变量s31
在程序应用过程中,有时候需求将数组进行重排,可以通过reshape。函数来实现。示例代
码如下:
r=np.array(range(9))#一维数组
rl=r.reshape((3,3))¥重排为3行3列
2.4数组运算
数组地运算主要包含数组之间地加,减,乘,除运算,数组地乘方运算,以与数组地数学函数
运算。示例代码如下:
importnumpyasnp
A=np.array([[1,2],[3,4]])8定义二维数组A
B=np.array(([5,6],[7,8]])#定义二维数组B
C1=A-BB两个数组元素之间相减,结果赋给变量C1
C2=A+B#,AB两个数组元素之间相加,结果赋给变量C2
C3=A*BB两个数组元素之间相乘,结果赋给变量C3
C4=A/B#,AB两个数组元素之间相除,结果赋给变量C4
C5=A/3#A数组所有元素除以3,结果赋给变量C5
C6=l/A#1除以A数组所有元素,结果赋给变量C6
C7=A**2#A数组所有元素取平方,结果赋给变量C7
C8-np.array([1,2,3,3,1,4.5,6,7,8,9])#定义数组C8
C9=(CR-min(Cft))/(m^x(CR)-min(CA))#对CR中地元素做极差化处理,结果赋给变量工
D=np.array([[1,2,3,4],[5,€,7,8J,[9,10,11,12],[13,14,15,16:])芋定义数组D
年数学运算
El=np.sqrt(D)¥对数组D中所有元素取平方根,结果赋给变量E1
E2=np.abs([l,-2r-100])¥取绝对值
E3=np.cos((1,2,3])#取cos值
E4=np.sin(D)斗取sin值
E5=np.exp(D)¥取指数函数值
2.5数组切片
数组切片即抽取数组中地部分元素构成新地数组,那么如何抽取妮?主要通过指定数组
中地行下标与列下标来抽取其元素,从而组成新地数组。下面介绍直接利用数组本身地索引
机制来切片与利用函数ix_()构建索引器进行切片地两种方法。
2.5.1常见地数组切片方法
一般地,假设D为待访问或切H地数据变量,则访问或者切片地数据=D[①,②]。其中①
为对D地行下标控制,②为对D地列下标控制,行与列下标控制通过整数列表来实现。但是需
求注意①整数列表中地元素不能超出D中地最大行数,而②不能超过D中地最大列数。为了
更灵活地操作数据,取所有地行或考列,可以用“:”来实现。同时,行控制还可以通过逻辑列
表来实现。示例代码如下:
importnumpyasnp
D=np.array([[l,2,3,4],(5,€,7,8],[9,10,11,12],[13,14,15,16:])¥定义数组D
件访问D中行为1,列为2地数据,注意下标是从0开始地
D12=D[1,2]
#访问D中第1,3列数据
D1=D[:Z[1,3]]
#访问D中第1,3行数据
D2=D[[1,3],:]
#取D中满足第0列大于5地所有列数据,本质上行控制为逻辑列表
Dtl=D[D[:,0]>5,:]
#取D中满足第0列大于5地2,3列数据,本质上行控制为逻辑列表
#Dt2=D[D[:,0]>5,[2,3]]
TF=[True,False,False,True]
#取D中第0,3行地所有列数据,本质上行控制为逻辑列表,取逻辑值为真地行
Dt3=D[TFz:]
#取口中第0,3行地2,3列数据
#Dt4=D[TF,[2,3]]
中大于4地所有元素
D5=D[D>4]
2.5.2利用ix_()函数进行数组切片
数组地切片也可以通过ix_()函数构造行,列下标索引器实现。示例代码如下:
importnumpyasnp
D=np.array([[l/2,3,4],[5,£,7,8],[9,10,11,12],(13,14,15,16:])#定义数组D
什提取D中行数为1,2,列数为1,3地所有元素
D3=D[np.ix_([l,2]/[1,3])]
#提取D中行验为0,1,列数为1,3地所有元素
D4=D[np.ix_(np.arange(2),[1,3])]
#提取以D中重1列小于11得到地逻辑数组作为行索引,列数为1,2地所有元素
D6=D[np.ix_(D[:,l]<llr[1,2])]
#提取以D中重1列小于11得到地逻辑数组作为行索引,列数为2地所有元素
D7=D[np.ix_(D[:,l]<ll,[2])]
#提取以第2.5.1节中地TF=[TruezFalse,False,TrueJ逻辑列表为行索弓列数为2地所有元素
TF=[True,False,False,True]
D8=D[np.ix_(TFz[2])]
#提取以第2.5.1节中地TF=[True,Fa1se,Fa1se,True】逻辑列表为行索弓I,列数为1,3地所有元素
D9=D(np.ix_(TF,[1,3])]
2.6数组连接
在数据处理中,多个数据源地集成整合是经常发生地。数组间地集成.与整合主要体现在
数组间地连接,包含水平连接与垂直连接两种方式。水平连接函数用hstack()实现,垂直连接函
数用vstack()实现。注意输入参数为两个待连接数组组成地元组。示例代码如下:
importnumpyasnp
A=np.array([[1,2],[3,4]])#定义二维数组A
B=np.array([[5,6],[7,8]])#定义二维数组B
C_s=np.hstack((A,B))#水平连接要求行数相同
C_v=np.vstack((A,B))¥垂直连接要求列数相同
2.7数据存取
利用Numpy包中地save函数,可以将数据集保存为二进制数据文件,数据文件后缀名
为.npy。示例代码如下:
importnumpyasnp
A=np.array([[lz2b[3,4]])#定义二维数组A
B=np.array([(5,6],[7,8]])手定义二维数组B
C_s=np.hstack((A,B))¥水平连接
np.save('data',C_s)
通过load函数,可以将该数据集加载,示例代码如下:
importnumpyasnp
C_s=np.load('data.npyr)
救据地存取机制,提供了数据传递与使用地便利,特别是在有些程序运行结果需求花费大
量时间地时候,保存其结果以便后续使用是非常有必要地。
2.8数组形态变换
Numpy提供了reshape方法用于改变数组地形状,reshape方法仅改变原始数据地形状,
不改变原始数据地值。示例代码如下:
importnumpyasnp
arr=np.arange(12)#创建一维ndarray
arrl=arr.reshape(3Z4)#设置ndarray地维度,改变其形态
以上示例代码将一维数组形态变换为二维数组,事实上也可以将二维数组形态展平变换
为一维数组,通过ravel。函数即可实现。示例代码如下:
importnumpyasnp
arr=np.arange(12).reshape(3,4)
arrl=arr.ravel()
2.9数组排序与搜索
通过Numpy提供地sort函数,可以对数组元素值按从小到大进行直接排序,示例代码如
下:
importnumpyasnp
arr=np.array([5,2,3,3/1,9,8,6,7])
arrl=np.sort(arr)
通过Numpy提供地argmaxHargmin函数,可以返回待搜索数组最大值与最小值元素地
索引值,如果存在多个最大值或最小值,则返回第一次出现地索引。对于二维数组,可以通过设
置axis=0或1返回各列或各行最大值或最小值索引。需求注意地是索引从0开始。示例代码
如下:
importnumpyasnp
arr=np.array([5,2,3,3,1,1,9,8,6,7,8,8))
arrl=arr.reshape(3,4)
maxindex=np.argmax(arr)
minindex=np.argmin(arr)
maxindexl=np.argmax(arrl,cxis=0)#返回各列最大值索引
minindexl=np.argmin(arrl,axis=l)#返回各彳^^小值索弓|
2.10矩阵与线性代数运算
2.10.1创建Numpy矩阵
在Numpy中可使用mat,matrix或bmat函数来创建矩阵。使用mat函数创建矩阵时,若
输入或对象,则不会为它们创建副本。因此,调用函数与调用
matrixndarraymatmatrix(dataz
copy=False)价,示例代码如下:
importnumpyasnp
matl=np.mat("123;456;789")
mat2=np.matrix([[1,2,3],[4,5,6],[7,8,9]])
在矩阵地日常使用过程中,将小矩阵组合成大矩阵是一种频率极高地操作。在Numpy中
可以使用bmat分块矩阵函数实现,示例代码如下:
importnumpyasnp
arrl=np.eye(3)
arr2=3*arrl
mat=np.bmat("arrlarr2;arrlarr2")
2.10.2矩阵地属性与基本运算
矩阵有其特有地属性,如表2-1所示。
表2-1矩阵特有属性与其说明
属性说明
T返回自身地转置
H返回自身地共挽转置
I返回自身地逆矩阵
矩阵属性地具体查看方法,示例代码如下:
importnumpyasnp
mat=np.matrix(np.arange(4).reshape(2,2))
mT=mat.T
mH=mat.H
ml=mat.I
在NumPy中,矩阵计算与ndarray计算类似,都可以作用于每个元素,比起使用for循环进
行计算,在速度上更加高效,示例代码如下:
importnumpyasnp
matl=np.mat(M123;456;789")
mat2=matl*3
mat3=matl+mat2
mat4=matl-mat2
mat5=matl*mat2
mat6=np.multiply(matl/mat2)打点乘
2.10.3线性代数运算
线性代数是数学地,个重要分支。Numpy包含numpy.linalg模块,提供线性代数所需地
功能,如计算逆矩阵,求解线性方程组,求特征值,奇异值分解以与求解行列式。numpy.linalg模
块中地一些常用函数如表2-2所示。
表2-2常用地numpy.linalg函数
函数名称说明
dot矩阵相乘
inv求逆矩阵
solve求解线性方程组Av=6
eig求特征值与特征向量
eigvals求特征值
svd计算奇异值分解
det求行列式
1.计算逆矩阵
在线性代数中,矩阵A与其逆矩阵A-1相乘得到一个单位矩阵人即AxAi=/。使用
numpy.linalg模块中地inv函数可以计算逆矩阵,示例代码如下:
importnumpyasnp
mat=np.mat('111;123;136')
inverse=np.linalg.inv(mat)
A=np.dot(mat,inverse)
2.求解线性方程组
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁工业大学《测量学2》2023-2024学年第一学期期末试卷
- 浙江省金华市2024年中考数学模拟考试试卷含答案
- 喀什大学《幼儿园教师职业道德》2023-2024学年第一学期期末试卷
- 江苏警官学院《电子商务数据分析与应用》2023-2024学年第一学期期末试卷
- 吉安幼儿师范高等专科学校《建筑摄影初步》2023-2024学年第一学期期末试卷
- 湖南理工学院《线天线与面天线》2023-2024学年第一学期期末试卷
- 高考物理模拟测试题(有答案)
- 重庆外语外事学院《软件测试与质量保证》2023-2024学年第一学期期末试卷
- 重庆电子工程职业学院《地理研究方法与写作》2023-2024学年第一学期期末试卷
- 浙江建设职业技术学院《乡土文化与乡村教育》2023-2024学年第一学期期末试卷
- 新能源行业市场分析报告
- 2025年高考历史复习之小题狂练300题(选择题):秦汉时期(20题)
- 钻机安全操作规程(3篇)
- 2025年产业园区运营与管理企业组织结构及部门职责
- 岩土工程勘察.课件
- 第五章 无土育苗技术
- 福建省福州三牧中学2024-2025学年七年级上学期期中生物试题(无答案)
- 2024统战工作总结
- 银行营业网点诈骗、冒领等突发事件应急预案
- 初一英语语法练习
- 《数字信号处理(第2版)》本科全套教学课件
评论
0/150
提交评论