本书由“Python程序设计基础”和“电子信息编程实践”两部分组成,旨在帮助读者低门槛学习Python程序设计,掌握电子信息课程中应用的编程方法。全书共11章,内容包括Python安装与环境搭建、Python语法基础、数据结构、函数、面向对象、Python绘图、正则表达式、数值计算,以及Python在电工电子、数字信号处理、图像处理方面的编程实践。本书可作为大学生和研究生学习Python的入门教材,也可作为高等学校电子信息类专业实践课程的参考书,还可作为工程技术人员的Python编程手册。
刘全金,教授,安庆师范大学电子工程与智能制造学院,硕士毕业于南京航空航天大学光学工程专业。主要研究方向为信息处理与机器学习。安徽省开放精品课程“通信系统原理”(2017KFK061)负责人,安徽省级教材建设项目“Python电子信息工程实践”负责人。主持多项省教育研究重点项目。
第1章 Python安装与环境搭建 1
1.1 Python语言特点 1
1.2 Python安装 2
1.2.1 下载和安装 2
1.2.2 配置环境变量 3
1.2.3 Python文件组成 4
1.2.4 运行Python 4
1.2.5 Python内置模块、标准模块库
和第三方模块库 4
1.3 集成开发环境 5
1.3.1 IDLE 6
1.3.2 Anaconda 6
1.3.3 PyCharm 6
1.4 Python第三方库 9
1.4.1 电子信息工程常用的
第三方库 9
1.4.2 pip管理第三方库 9
1.4.3 Conda管理第三方库 11
1.4.4 PyCharm集成开发环境中管理
第三方库 14
*1.5 虚拟环境和解释器 14
1.5.1 虚拟环境的文件组成 15
1.5.2 Python管理虚拟环境 16
1.5.3 Conda管理虚拟环境 18
1.5.4 PyCharm虚拟环境创建和
设置 24
1.6 Python与Anaconda比较 26
*1.7 图像分割软件MedSAM及虚拟
环境配置 26
1.8 编程练习 27
第2章 Python语法基础 28
2.1 语法基础 28
2.1.1 标识符 28
2.1.2 关键字和内置函数 28
2.1.3 常量和变量 29
2.1.4 语句及书写 29
2.1.5 模块 31
2.1.6 包 35
2.2 数据类型 37
2.2.1 数值类型 37
2.2.2 布尔型 38
2.2.3 数据类型转换 38
2.3 运算符 39
2.3.1 算术运算符 39
2.3.2 赋值运算符 40
2.3.3 关系运算符 43
2.3.4 逻辑运算符 44
2.3.5 运算符的优先级 45
2.4 程序结构 45
2.4.1 选择结构 45
2.4.2 循环结构 52
2.5 编程练习 56
第3章 数据结构 57
3.1 字符串初步 57
3.1.1 普通字符串 57
3.1.2 带转义字符的普通字符串 57
3.1.3 长字符串 59
3.1.4 原始字符串 59
3.2 序列 59
3.2.1 索引 60
3.2.2 切片 60
3.2.3 序列拼接 61
3.2.4 序列乘法 61
3.2.5 序列成员检测 61
3.2.6 序列长度、最大值、最小值 62
3.3 字符串高级操作 62
3.3.1 字符串格式化 62
3.3.2 字符串方法 64
3.3.3 字符串连接与分割 66
3.3.4 字符串与数据转换 67
3.3.5 f字符串 67
3.4 元组 69
3.4.1 创建元组 69
3.4.2 元组序列标准操作 71
3.4.3 元组拆分 71
3.4.4 元组元素的遍历 72
*3.4.5 元组推导式 72
3.5 列表 73
3.5.1 创建列表 73
3.5.2 列表序列标准操作 74
3.5.3 列表赋值 74
3.5.4 列表方法 77
3.5.5 列表元素的遍历 83
*3.5.6 列表复制 83
3.5.7 列表推导式 88
3.6 集合 88
3.6.1 创建可变集合 89
3.6.2 集合长度、最大值、最小值 89
3.6.3 可变集合 90
3.6.4 不可变集合 90
3.6.5 集合的交集、并集和差集 90
3.6.6 集合元素的遍历 91
*3.6.7 集合推导式 91
3.7 字典 92
3.7.1 创建字典 92
3.7.2 字典访问和遍历 94
*3.7.3 字典赋值、浅复制和深度
复制 96
3.7.4 字典元素删除 96
3.7.5 字典元素替换 96
3.7.6 字典推导式 97
3.8 数组 98
3.8.1 创建数组对象 98
3.8.2 访问和改变数组结构 102
3.8.3 访问数组元素 103
3.8.4 数组运算 104
3.9 习题 107
第4章 函数 109
4.1 内置函数 109
4.1.1 eval函数 110
4.1.2 max、min和sum函数 111
4.1.3 dir和help函数 111
4.2 函数定义和调用 111
4.2.1 函数定义 111
4.2.2 函数调用 114
4.3 函数参数传递 115
4.3.1 实参及实参传递 115
4.3.2 形参及实参接收 118
4.3.3 函数参数传递步骤 122
4.4 面向函数编程 124
4.4.1 变量的作用域 124
4.4.2 嵌套函数 126
4.4.3 递归函数 126
4.5 函数式编程 127
4.5.1 函数式编程的概念及特点 127
4.5.2 lambda函数 128
4.5.3 高阶函数 130
4.6 编程练习 132
第5章 面向对象编程 133
5.1 类和对象概述 133
5.1.1 面向对象的基本概念 133
5.1.2 面向对象的基本特征 134
5.1.3 类和对象 134
5.2 封装性 141
5.2.1 私有变量 141
5.2.2 定义属性 143
5.2.3 私有方法 143
5.3 继承性 144
5.3.1 继承概念 144
5.3.2 定义子类 146
5.3.3 子类构造方法 146
5.3.4 子类重写实例方法 147
5.3.5 多重继承 148
5.4 多态性 149
5.4.1 多态概念 149
5.4.2 类方法的多态性 149
5.5 模块创建与测试 150
5.5.1 模块创建和测试代码 150
5.5.2 添加模块搜索文件夹 151
5.6 编程练习 152
第6章 Python绘图 153
6.1 图形对象 153
6.1.1 matplotlib模块库 153
6.1.2 图形对象 153
6.1.3 图形窗口 154
6.1.4 子图 157
6.2 二维绘图 168
6.2.1 直角坐标绘图 168
6.2.2 对数坐标绘图 182
6.2.3 极坐标绘图 183
6.3 三维绘图 184
6.3.1 创建三维图形子图 184
6.3.2 绘制三维曲线 184
6.3.3 生成二维网格数据 186
6.3.4 绘制三维网格图 188
6.3.5 绘制三维曲面 189
6.3.6 图形视角 190
6.3.7 绘制三维条状图 191
6.3.8 绘制三维条形图 191
6.3.9 绘制三维等高线图 192
6.4 动态图 193
6.4.1 绘制动态图 193
6.4.2 生成FuncAnimation动态图
对象 194
6.5 编程练习 196
第7章 正则表达式 198
7.1 正则表达式字符 198
7.1.1 普通字符 198
7.1.2 元字符 198
7.1.3 字符转义 199
7.1.4 原始字符串定义正则表达式 199
7.1.5 开始符号和结束符号 200
7.1.6 正则表达式的查找函数及
匹配对象 200
7.2 字符类 201
7.2.1 定义字符类 201
7.2.2 字符类取反 202
7.2.3 字符类区间 203
7.2.4 预定义字符类 203
7.3 量词 204
7.3.1 量词及其功能 204
7.3.2 量词的贪婪或懒惰设置 205
7.4 分组 206
7.4.1 分组设置 206
7.4.2 分组命名 207
7.4.3 分组引用 207
7.4.4 非捕获分组 209
7.5 re模块应用 210
7.5.1 Match对象 210
7.5.2 字符串匹配与查找 211
7.5.3 字符串分割 212
7.5.4 字符串替换 213
7.6 正则表达式编译 214
7.6.1 正则表达式对象方法 214
7.6.2 正则表达式编译标志 215
7.7 编程练习 218
第8章 数值计算 219
8.1 数值运算 219
8.1.1 差分 219
8.1.2 数值积分 220
8.1.3 卷积 223
8.2 线性代数运算 225
8.2.1 行列式计算 225
8.2.2 向量点积运算 225
8.2.3 矩阵运算 226
8.2.4 矩阵特征值和特征向量 228
8.2.5 矩阵奇异值分解 229
8.2.6 线性方程组求解 230
8.2.7 最小二乘法 231
8.2.8 线性规划 233
8.3 非线性问题 234
8.3.1 多项式 234
8.3.2 数据插值 240
8.3.3 非线性方程(组)求解 242
*8.3.4 无约束极小值求解和有约束
极小值求解 245
8.4 实践练习 245
第9章 电工电子 247
9.1 Python在电工技术中的应用 247
9.1.1 节点电压法 247
9.1.2 一阶动态电路分析 248
9.1.3 交流动态电路分析 250
9.2 晶体管放大电路 257
9.2.1 半导体二极管的直流电路
分析 257
9.2.2 放大器电路分析 258
9.3 电力电机 263
9.3.1 电力电子 263
9.3.2 电机 265
9.4 实践练习 267
第10章 数字信号处理 268
10.1 模拟信号抽样 268
10.2 信号滤波 270
10.2.1 设计巴特沃斯滤波器 270
10.2.2 信号滤波函数 271
10.3 相关函数 273
10.3.1 自相关函数 274
10.3.2 互相关函数 274
10.4 信号频域分析 275
10.4.1 FFT 276
10.4.2 FFT频谱搬移和频率轴
表示 276
10.4.3 FFT反变换 277
10.5 信号功率谱分析 278
10.6 离散余弦变换 280
10.7 音频信号分析 281
10.7.1 音频信号时频分析 281
10.7.2 语音信号MFCC特征提取 282
10.7.3 Librosa库 282
10.8 实践练习 285
第11章 图像处理 286
11.1 图像处理概述 286
11.1.1 图像的基本概念 286
11.1.2 图像处理及其应用 286
11.2 图像读取 287
11.2.1 PIL读取图像 287
11.2.2 matplotlib读取图像 287
11.2.3 OpenCV读取图像 287
11.2.4 Scikit-image读取图像 288
11.3 图像显示和保存 288
11.3.1 PIL显示和保存图像 288
11.3.2 matplotlib显示和保存
图像 289
11.3.3 OpenCV显示和保存图像 290
11.3.4 Scikit-image显示和保存
图像 290
11.4 图像通道拆分和合并 291
11.4.1 PIL通道数据的拆分和
合并 291
11.4.2 OpenCV通道数据的拆分
和合并 292
11.5 图像几何变换 293
11.5.1 图像缩放 293
11.5.2 图像仿射变换 294
11.5.3 图像平移 294
11.5.4 图像旋转 295
11.5.5 点映射变换图像 296
11.6 边缘检测 297
11.6.1 图像滤波的OpenCV的
方法 297
11.6.2 Prewitt算子 298
11.6.3 Sobel算子 300
11.6.4 Canny边缘检测算法 301
11.7 实践练习 303
参考文献 304