版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章
科学计算包Numpy数组创建、数组尺寸与重排数组运算与数学函数数组切片、连接、存取、展平、排序与搜索Numpy简介第2章
Numpy是Python用于科学计算的基础包,也是大量Python数学和科学计算包的基础。Numpy的核心基础是ndarray(N-dimensionalarray,N维数组),即由数据类型相同的元素组成的N维数组。使用该包,需要按模块的形式导入,即:importnumpy,大多情况下是importnumpyasnp,即简称np。利用array()函数创建数组第2章。基于array()函数,可以将列表、元组、嵌套列表、嵌套元组等数据结构转化为数组d1=[1,2,3,4,0.1,7]#列表d2=(1,2,3,4,2.3)#元组d3=[[1,2,3,4],[5,6,7,8]]#嵌套列表,元素为列表d4=[(1,2,3,4),(5,6,7,8)]#嵌套列表,元素为元组d5=((1,2,3,4),(5,6,7,8))#嵌套元组importnumpyasnpd11=np.array(d1)d21=np.array(d2)d31=np.array(d3)d41=np.array(d4)d51=np.array(d5)deld1,d2,d3,d4,d5利用内置函数创建数组第2章importnumpyasnpz1=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章d1=[1,2,3,4,0.1,7]#列表d3=[[1,2,3,4],[5,6,7,8]]#嵌套列表,元素为列表importnumpyasnpd11=np.array(d1)#将d1列表转换为一维数组,结果赋值给变量d11d31=np.array(d3)#将d3嵌套列表转换为二维数组,结果赋值给变量d31deld1,d3#删除d1,d3s11=d11.shape
#返回一维数组d11的尺寸,结果赋值给变量s11s31=d31.shape#返回二维数组d31的尺寸,结果赋值给变量s31r=np.array(range(9))#一维数组r1=r.reshape((3,3))#重排为3行3列第2章数组运算importnumpyasnpA=np.array([[1,2],[3,4]])#定义二维数组AB=np.array([[5,6],[7,8]])#定义二维数组BC1=A-B#A、B两个数组元素之间相减,结果赋给变量C1C2=A+B#A、B两个数组元素之间相加,结果赋给变量C2C3=A*B#A、B两个数组元素之间相乘,结果赋给变量C3C4=A/B#A、B两个数组元素之间相除,结果赋给变量C4C5=A/3#A数组所有元素除以3,结果赋给变量C5C6=1/A#1除以A数组所有元素,结果赋给变量C6C7=A**2#A数组所有元素取平方,结果赋给变量C7C8=np.array([1,2,3,3.1,4.5,6,7,8,9])#定义数组C8C9=(C8-min(C8))/(max(C8)-min(C8))#C8中的元素做极差化处理,结果赋给变量C9第2章数学函数D=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])#定义数组D#数学运算E1=np.sqrt(D)#数组D中所有元素取平方根,结果赋给变量E1E2=np.abs([1,-2,-100])#取绝对值E3=np.cos([1,2,3])#取cos值E4=np.sin(D)#取sin值E5=np.exp(D)#取指数函数值第2章常用组切片方法假设D为待访问或切片的数据变量,则访问或者切片的数据=D[①,②]。其中①为对D的行下标控制,②为对D的列下标控制。为了更灵活地操作数据,取所有的行或者列,可以用“:”来代替实现。同时,行控制还可以通过逻辑列表来实现。importnumpyasnpD=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])#定义数组DD12=D[1,2]#访问D中行为1,列为2的数据,注意下标是从0开始的。D1=D[:,[1,3]]#访问D中第1、3列数据D2=D[[1,3],:]#访问D中第1、3行数据Dt1=D[D[:,0]>5,:]#取D中满足第0列大于5的所有列数据,本质上行控制为逻辑列表TF=[True,False,False,True]#取D中第0、3行的所有列数据,本质上行控制为逻辑列表,取逻辑值为真的行Dt3=D[TF,:]第2章利用ix_()函数进行数组切片通过ix_()函数构造行、列下标索引器,实现数组的切片操作。importnumpyasnpD=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])#定义数组DD3=D[np.ix_([1,2],[1,3])]#提取D中行数为1、2,列数为1、3的所有元素D4=D[np.ix_(np.arange(2),[1,3])]#提取D中行数为0、1,列数为1、3的所有元素D6=D[np.ix_(D[:,1]<11,[1,2])]#提取D中第1列小于11得到的逻辑数组作为行索引,列数为1、2的所有元素D7=D[np.ix_(D[:,1]<11,[2])]#提取D中第1列小于11得到的逻辑数组作为行索引,列数为2的所有元素TF=[True,False,False,True]D8=D[np.ix_(TF,[2])]#提取TF=[True,False,False,True]逻辑列表为行索引,列数为2的所有元素D9=D[np.ix_(TF,[1,3])]#提取TF=[True,False,False,True]逻辑列表为行索引,列数为1,,3的所有元素第2章数组连接importnumpyasnpA=np.array([[1,2],[3,4]])#定义二维数组AB=np.array([[5,6],[7,8]])#定义二维数组BC_s=np.hstack((A,B))#水平连接要求行数相同C_v=np.vstack((A,B))#垂直连接要求列数相同第2章数组存取importnumpyasnpA=np.array([[1,2],[3,4]])#定义二维数组AB=np.array([[5,6],[7,8]])#定义二维数组BC_s=np.hstack((A,B))#水平连接np.save('data',C_s)第2章数组存取importnumpyasnpC_s=np.load(‘data.npy’)
数组展平
前面介绍了reshape函数将一维数组形态变换为二维数组,事实上也可以将二维数组形态展平变换为一维数组,通过ravel()函数即可实现。importnumpyasnparr=np.arange(12).reshape(3,4)arr1=arr.ravel()第2章
数组排序
通过sort函数,可以对数组元素值按从小到大进行直接排序importnumpyasnparr=np.array([5,2,3,3,1,9,8,6,7])arr1=np.sort(arr)第2章
数组搜索
通过argmax和argmin函数,可以返回待搜索数组最大值和最小值元素的索引值,如果存在多个最大值或最小值,则返回第一次出现的索引。对于二维数组而已,可以通过设置axis=0或1返回各列或者各行最大值或最小值索引。需要注意的是,索引从0开始。importnumpyasnparr=np.array([5,2,3,3,1,1,9,8,6,7,8,8])arr1=arr.reshape(3,4)maxindex=np.argmax(arr)minindex=np.argmin(arr)maxindex1=np.argmax(arr1,axis=0)#返回各列最大值索引minindex1=np.argmin(arr1,axis=1)
#返回各行最小值索引第2章第2章
科学计算包Numpy矩阵创建、矩阵基本属性矩阵基本运算线性代数运算
矩阵创建Numpy的matrix是继承自NumPy的二维数组对象,不仅拥有二维数组的属性、方法与函数,还拥有诸多特有的属性与方法。同时,Numpy中的matrix和线性代数中的矩阵概念几乎完全相同,同样含有转置矩阵,共轭矩阵,逆矩阵等概念。利用mat、matrix创建Numpy矩阵Numpy中可使用mat、matrix或bmat函数来创建矩阵importnumpyasnpmat1=np.mat("123;456;789")mat2=np.matrix([[1,2,3],[4,5,6],[7,8,9]])
第2章
矩阵创建
利用bmat创建矩阵在矩阵的日常使用过程中,将小矩阵组合成大矩阵是一种频率极高的操作。在Numpy中可以使用bmat分块矩阵函数实现。importnumpyasnparr1=np.eye(3)arr2=3*arr1mat=np.bmat(“arr1arr2;arr1arr2”)
第2章
矩阵基本属性(转置、共轭、逆矩阵)
importnumpyasnpmat=np.matrix(np.arange(4).reshape(2,2))mT=mat.TmH=mat.HmI=mat.I矩阵基本属性第2章
importnumpyasnpmat1=np.mat("123;456;789")mat2=mat1*3mat3=mat1+mat2mat4=mat1-mat2mat5=mat1*mat2mat6=np.multiply(mat1,mat2)#点乘矩阵基本运算第2章
线性代数运算线性代数是数学的一个重要分支。Numpy包含numpy.linalg模块,提供线性代数所需的功能,如计算逆矩阵、求解线性方程组、求特征值、奇异值分解以及求解行列式等。numpy.linalg模块中的一些常用函数表函数名称说明dot矩阵相乘inv求逆矩阵solve求解线性方程组
eig求特征值和特征向量eigvals求特征值svd计算奇异值分解det求行列式线性代数运算第2章
计算逆矩阵使用numpy.linalg模块中的inv函数可以计算逆矩阵importnumpyasnpmat=np.mat('111;123;136')inverse=np.linalg.inv(mat)A=np.dot(mat,inverse)线性代数运算第2章
求解线性方程组numpy.linalg模块中的solve函数可以求解线性方程组importnumpyasnpA=np.mat("1,-1,1;2,1,0;2,1,-1")b=np.array([4,3,-1])x=np.l
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省衡水市高级统计师资格考试(高级统计实务与案例分析)自测试题库及答案(2026年)
- 广东省2026年成人高考理工类复习题及答案
- TCCPA 59-2025 风力发电机组钢混塔筒安装与验收技术规程
- 2026年中国古代文学常识知识竞赛试题库及答案(共50题)
- 2026年二级注册结构工程师仿真试题及答案
- 金属冶炼企业安全生产责任制度
- 商场突发应急预案演练脚本
- 医学检验(士)真题含答案详解(A卷)
- 压力表检定试题及答案
- 2026年江西省成人高等学校招生考试民法复习题及答案
- 2026低压电工操作证考试题库及答案
- 2026四川甘孜州丹巴县选调事业单位人员9人笔试模拟试题及答案详解
- 4原型省道的变化设计与变化(课件)《成衣立体裁剪》(航空工业出版社)
- 2026湖北荆门市交通旅游投资集团有限公司招聘10人模拟试卷含完整答案详解(历年真题)
- 2026年执业兽医考试真题(完整版)
- 神马股份帘子布发展公司招聘笔试题库2026
- 2026江苏南京江北新材料科技园管理办公室招聘5人笔试参考题库及答案详解
- 2026年医保政策培训试题(含答案)
- 01 必修上教材文言文逐篇过关挖空训练(解析版)2026版-高中语文文言文逐篇过关挖空训练
- 中国邮政2025苏州市秋招信贷审查岗位面试模拟题及答案
- GB/T 35351-2025增材制造术语
评论
0/150
提交评论