简述
了解 Python 计算生态的宽度和广度,了解各领域重要计算生态的名字,体会编程之美。
课件
导学
复习
.mp4%22%2C%22size%22%3A33516297%2C%22taskId%22%3A%22u256471eb-69a9-4baf-bd06-52eb231e291%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483361525-1891f5ff-4e48-4113-abbd-f759b9a6ed4a.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22qamyQ%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#qamyQ)
概要
.mp4%22%2C%22size%22%3A18813450%2C%22taskId%22%3A%22u6e07c25b-cd9e-4050-aea8-671e9cacde5%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483361522-a0dad879-228c-4484-b006-ef4033e65a3d.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22f19LW%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#f19LW)
从数据处理到人工智能
单元开篇
.mp4%22%2C%22size%22%3A38769177%2C%22taskId%22%3A%22ua1b992ec-0b79-45be-b8fd-5043647f443%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483368670-f0819b24-e511-4d68-addd-15811554716f.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22iwJ68%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#iwJ68)
数据表示->数据清洗->数据统计->数据可视化->数据挖掘->人工智能
- 数据表示:采用合适方式用程序表达数据
- 数据清理:数据归一化、数据转换、异常值处理
- 数据统计:数据的概要理解,数量、分布、中位数等
- 数据可视化:直观展示数据内涵的方式
- 数据挖掘:从数据分析获得知识,产生数据外的价值
- 人工智能:数据/语言/图像/视觉等方面深度分析与决策
Python 库之数据分析
.mp4%22%2C%22size%22%3A70403893%2C%22taskId%22%3A%22u80b8ab67-36df-45b4-b702-d2ab4ce830d%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483368688-4f6f2804-09e7-417d-8481-73f55849d02f.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22dVqkT%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#dVqkT) Numpy: 表达N维数组的最基础库
- Python 接口使用,C 语言实现,计算速度优异
- Python 数据分析及科学计算的基础库,支撑 Pandas 等
- 提供直接的矩阵运算、广播函数、线性代数等功能
Numpy 链接:https://numpy.org/
def pySum():
a = [0, 1, 2, 3, 4]
b = [9, 8, 7, 6, 5]
c = []
for i in range(len(a)):
c.append(a[i] ** 2 + b[i] ** 3)
return c
print(pySum()) # [729, 513, 347, 225, 141]
import numpy as np
def pySum2():
a = np.array([0, 1, 2, 3, 4])
b = np.array([9, 8, 7, 6, 5])
c = a**2 + b**3
return c
print(pySum2()) # [729 513 347 225 141]
Pandas: Python数据分析高层次应用库
- 提供了简单易用的数据结构和数据分析工具
- 理解数据类型与索引的关系,操作索引即操作数据
- Python 最主要的数据分析功能库,基于 Numpy 开发
Pandas 链接:http://pandas.pydata.org/
SciPy: 数学、科学和工程计算功能库
- 提供了一批数学算法及工程数据运算功能
- 类似 Matlab,可用于如傅里叶变换、信号处理等应用
- Python 最主要的科学计算功能库,基于 Numpy 开发
SciPy 链接:https://scipy.org/
Python 库之数据可视化
.mp4%22%2C%22size%22%3A54183105%2C%22taskId%22%3A%22u92d00785-de77-45c9-aca1-6f797f7e475%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483368676-d14d1c2f-8338-4747-8404-f9f765a4759f.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22D5rWw%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#D5rWw) Matplotlib: 高质量的二维数据可视化功能库
- 提供了超过100种数据可视化展示效果
- 通过matplotlib.pyplot子库调用各可视化效果
- Python最主要的数据可视化功能库,基于Numpy开发
Seaborn: 统计类数据可视化功能库
- 提供了一批高层次的统计类数据可视化展示效果
- 主要展示数据间分布、分类和线性关系等内容
- 基于Matplotlib开发,支持Numpy和Pandas
Mayavi:三维科学数据可视化功能库
- 提供了一批简单易用的3D科学计算数据可视化展示效果
- 目前版本是Mayavi2,三维可视化最主要的第三方库
- 支持Numpy、TVTK、Traits、Envisage等第三方库
Python 库之文本处理
.mp4%22%2C%22size%22%3A54713289%2C%22taskId%22%3A%22u6043bfdd-493e-47f5-9aaf-99c6cbdacfd%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483382194-890c8be3-886b-4788-9049-2171bd636262.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22xeyZO%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#xeyZO) PyPDF2:用来处理pdf文件的工具集
- 提供了一批处理 PDF 文件的计算功能
- 支持获取信息、分隔/整合文件、加密解密等
- 完全 Python 语言实现,不需要额外依赖,功能稳定
PyPDF2 doc:https://pypdf2.readthedocs.io/en/3.0.0/
PyPDF2 pypi:https://pypi.org/project/PyPDF2/
NLTK:自然语言文本处理第三方库
- 提供了一批简单易用的自然语言文本处理功能
- 支持语言文本分类、标记、语法句法、语义分析等
- 最优秀的Python自然语言处理库
Python-docx:创建或更新 Microsoft Word 文件的第三方库
- 提供创建或更新 .doc .docx 等文件的计算功能
- 增加并配置段落、图片、表格、文字等,功能全面
https://python-docx.readthedocs.io/en/latest/index.html
Python 库之机器学习
.mp4%22%2C%22size%22%3A56756734%2C%22taskId%22%3A%22u8a9fc4d4-30fe-4fb9-9f6e-fa5faf053e2%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483392503-0d3eeff8-3f28-4a55-9d18-1cf9212f5ec9.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22GAjqj%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#GAjqj) Scikit-learn:机器学习方法工具集
- 提供一批统一化的机器学习方法功能接口
- 提供聚类、分类、回归、强化学习等计算功能
- 机器学习最基本且最优秀的 Python 第三方库
https://scikit-learn.org/stable/
与数据处理相关的第三方库:
TensorFlow:AlphaGo 背后的机器学习计算框架
- 谷歌公司推动的开源机器学习框架
- 将数据流图作为基础,图节点代表运算,边代表张量
- 应用机器学习方法的一种方式,支撑谷歌人工智能应用
https://www.tensorflow.org/?hl=zh-cn
MXNet:基于神经网络的深度学习计算框架
- 提供可扩展的神经网络及深度学习计算功能
- 可用于自动驾驶、机器翻译、语音识别等众多领域
- Python最重要的深度学习计算框架
https://mxnet.incubator.apache.org/versions/1.9.1/
单元小结
.mp4%22%2C%22size%22%3A19196044%2C%22taskId%22%3A%22ucc5aaf50-b515-4c50-9380-78f6717f142%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483408110-b54fb68e-a4ce-48a4-b2fb-5503efa8c648.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22Fdt4V%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#Fdt4V)
- Numpy、Pandas、SciPy
- Matplotlib、Seaborn、Mayavi
- PyPDF2、NLTK、python-docx
- Scikit-learn、TensorFlow、MXNet
实例 15: 霍兰德人格分析雷达图
问题分析
.mp4%22%2C%22size%22%3A52938217%2C%22taskId%22%3A%22u48db71a0-2372-4f92-a0e9-b6dcd276a9b%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483420677-ba5c4ddb-0cc0-4a44-9f9e-f194242033c6.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22EC4tA%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#EC4tA)
实例展示
.mp4%22%2C%22size%22%3A31201989%2C%22taskId%22%3A%22u1b2b2703-31bf-48b1-aada-5200474203d%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483425770-be6eb2bb-f8b1-483d-80e6-b6330b79a5d2.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22YKRu0%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#YKRu0)
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
# 需要是系统带有的字体
matplotlib.rcParams["font.family"] = "Hiragino Sans GB"
radar_labels = np.array(
["研究型(I)", "艺术型(A)", "社会型(S)", "企业型(E)", "常规型(C)", "现实型(R)", "研究型(I)"]
) # 雷达标签,增加一个起始元素以与 angles 数组长度匹配
nAttr = 6
data = np.array(
[
[0.40, 0.32, 0.35, 0.30, 0.30, 0.88],
[0.85, 0.35, 0.30, 0.40, 0.40, 0.30],
[0.43, 0.89, 0.30, 0.28, 0.22, 0.30],
[0.30, 0.25, 0.48, 0.85, 0.45, 0.40],
[0.20, 0.38, 0.87, 0.45, 0.32, 0.28],
[0.34, 0.31, 0.38, 0.40, 0.92, 0.28],
]
) # 数据值
data_labels = ("艺术家", "实验员", "工程师", "推销员", "社会工作者", "记事员")
angles = np.linspace(0, 2 * np.pi, nAttr, endpoint=False)
data = np.concatenate((data, [data[0]]))
angles = np.concatenate((angles, [angles[0]]))
fig = plt.figure(facecolor="white")
plt.subplot(111, polar=True)
plt.plot(angles, data, "o-", linewidth=1, alpha=0.2)
plt.fill(angles, data, alpha=0.25)
plt.thetagrids(angles * 180 / np.pi, radar_labels) # 移除 frac 参数
plt.figtext(0.52, 0.95, "霍兰德人格分析", ha="center", size=20)
legend = plt.legend(data_labels, loc=(0.94, 0.80), labelspacing=0.1)
plt.setp(legend.get_texts(), fontsize="large")
plt.grid(True)
plt.savefig("holland_radar.jpg")
plt.show()
举一反三
.mp4%22%2C%22size%22%3A30832082%2C%22taskId%22%3A%22u8f3137dc-691d-4afb-a8ac-bed21618f82%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483427057-fd34005f-e760-4497-ba05-4d168255f628.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22qO0EW%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#qO0EW)
从 Web 解析到网络空间
单元开篇
.mp4%22%2C%22size%22%3A10960100%2C%22taskId%22%3A%22uc9ec6749-ab87-414f-a90d-7be7cbf1263%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483427849-01bb461e-d376-45b3-b0be-d7863972861f.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22J1ZWy%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#J1ZWy)
Python 库之网络爬虫
.mp4%22%2C%22size%22%3A58433954%2C%22taskId%22%3A%22u38582820-3fe0-4dfc-ab2d-305bf6dd359%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483436964-df6dfed4-68f5-4512-8027-717ec047646b.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22Au20Z%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#Au20Z) Requests: 最友好的网络爬虫功能库
- 提供了简单易用的类HTTP协议网络爬虫功能
- 支持连接池、SSL、Cookies、HTTP(S)代理等
- Python最主要的页面级网络爬虫功能库
https://pypi.org/project/requests/
https://requests.readthedocs.io/en/latest/
Scrapy: 优秀的网络爬虫框架
- 提供了构建网络爬虫系统的框架功能,功能半成品
- 支持批量和定时网页爬取、提供数据处理流程等
- Python最主要且最专业的网络爬虫框架
Scrapy: Python数据分析高层次应用库
pyspider: 强大的Web页面爬取系统
- 提供了完整的网页爬取系统构建功能
- 支持数据库后端、消息队列、优先级、分布式架构等
- Python重要的网络爬虫类第三方库
http://docs.pyspider.org/en/latest/
Python 库之 Web 信息提取
.mp4%22%2C%22size%22%3A67582033%2C%22taskId%22%3A%22uf05dd609-d4b9-42ca-89f3-03d98a725ea%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483447473-e0a47b4a-09f7-4f5a-b3f4-c304e4661ced.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22yatV1%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#yatV1) Beautiful Soup: HTML 和 XML 的解析库
- 提供了解析HTML和XML等Web信息的功能
- 又名beautifulsoup4或bs4,可以加载多种解析引擎
- 常与网络爬虫库搭配使用,如Scrapy、requests等
https://www.crummy.com/software/BeautifulSoup/
Re: 正则表达式解析和处理功能库
- 提供了定义和解析正则表达式的一批通用功能
- 可用于各类场景,包括定点的Web信息提取
- Python最主要的标准库之一,无需安装
API:
- re.search()
- re.match()
- re.findall()
- re.split()
- re.finditer()
- re.sub()
https://docs.python.org/zh-cn/3.10/library/re.html
Python-Goose: 提取文章类型Web页面的功能库
- 提供了对Web页面中文章信息/视频等元数据的提取功能
- 针对特定类型Web页面,应用覆盖面较广
- Python最主要的Web信息提取库
https://github.com/grangier/python-goose
Python 库之 Web 网站开发
.mp4%22%2C%22size%22%3A63175239%2C%22taskId%22%3A%22ude014113-df3f-413f-97ed-9de1abfbf7b%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483453121-0f330aa3-c202-4331-b77b-c7e6c203d464.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22wUjxQ%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#wUjxQ) Django: 最流行的Web应用框架
- 提供了构建Web系统的基本应用框架
- MTV模式:模型(model)、模板(Template)、视图(Views)
- Python最重要的Web应用框架,略微复杂的应用框架
https://www.djangoproject.com/
Pyramid: 规模适中的Web应用框架
- 提供了简单方便构建Web系统的应用框架
- 不大不小,规模适中,适合快速构建并适度扩展类应用
- Python产品级Web应用框架,起步简单可扩展性好
Flask: Web应用开发微框架
- 提供了最简单构建Web系统的应用框架
- 特点是:简单、规模小、快速
- Django > Pyramid > Flask
https://flask.palletsprojects.com/en/2.3.x/
Python 库之网络应用开发
.mp4%22%2C%22size%22%3A38336232%2C%22taskId%22%3A%22ub2703507-f713-43de-84b1-d1ca0f9c3f5%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483453631-895d7f35-5ca5-4383-9f24-34a36c376bc1.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22i7r0W%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#i7r0W) WeRoBot:微信公众号开发框架
- 提供了解析微信服务器消息及反馈消息的功能
- 建立微信机器人的重要技术手段
https://github.com/offu/WeRoBot
aip: 百度AI开放平台接口
- 提供了访问百度AI服务的Python功能接口
- 语音、人脸、OCR、NLP、知识图谱、图像搜索等领域
- Python百度AI应用的最主要方式
https://github.com/Baidu-AIP/python-sdk
https://ai.baidu.com/
MyQR: 二维码生成第三方库
- 提供了生成二维码的系列功能
- 基本二维码、艺术二维码和动态二维码
https://github.com/x-hw/amazing-qr
居然还能生成会动的二维码!!!
单元小结
.mp4%22%2C%22size%22%3A15978912%2C%22taskId%22%3A%22ucb594f83-4761-45f8-9bf2-04268db9e72%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483458386-cd676813-bbfb-46b8-99a8-ad5e899e1aaa.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22Lkoye%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#Lkoye)
- Requests、Scrapy、pyspider
- Beautiful Soup、Re、Python-Goose
- Django、Pyramid、Flask
- WeRobot、aip、MyQR
从人机交互到艺术设计
单元开篇
.mp4%22%2C%22size%22%3A6583928%2C%22taskId%22%3A%22u7520d5f7-46a2-4c99-92f2-511fb37825d%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483478393-267ee77e-1433-4ca7-bc57-4d5a729dfb17.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22WAsKA%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#WAsKA)
Python 库之图形用户界面
.mp4%22%2C%22size%22%3A64460653%2C%22taskId%22%3A%22u88559b08-3f4c-4d16-9701-817677b5c31%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483479278-743c918e-0b4c-4963-ba65-3f29bc37067e.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22LaGOO%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#LaGOO) PyQt5: Qt开发框架的Python接口
- 提供了创建Qt5程序的Python API接口
- Qt是非常成熟的跨平台桌面应用开发系统,完备GUI
- 推荐的Python GUI开发第三方库
https://www.riverbankcomputing.com/software/pyqt
wxPython: 跨平台GUI开发框架
- 提供了专用于Python的跨平台GUI开发框架
- 理解数据类型与索引的关系,操作索引即操作数据
- Python最主要的数据分析功能库,基于Numpy开发
PyGObject: 使用GTK+开发GUI的功能库
- 提供了整合GTK+、WebKitGTK+等库的功能
- GTK+:跨平台的一种用户图形界面GUI框架
- 实例:Anaconda采用该库构建GUI
https://pygobject.readthedocs.io/en/latest/
Python 库之游戏开发
.mp4%22%2C%22size%22%3A50204895%2C%22taskId%22%3A%22u8d9df3dc-77c0-4c52-b3c3-532e705ad88%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483483159-6b6b3b7a-fa9b-4e4a-b5f1-0c12fdf494a4.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22vDbHR%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#vDbHR) PyGame: 简单的游戏开发功能库
- 提供了基于SDL的简单游戏开发功能及实现引擎
- 理解游戏对外部输入的响应机制及角色构建和交互机制
- Python游戏入门最主要的第三方库
Panda3D: 开源、跨平台的3D渲染和游戏开发库
- 一个3D游戏引擎,提供Python和C++两种接口
- 支持很多先进特性:法线贴图、光泽贴图、卡通渲染等
- 由迪士尼和卡尼基梅隆大学共同开发
cocos2d: 构建2D游戏和图形界面交互式应用的框架
- 提供了基于OpenGL的游戏开发图形渲染功能
- 支持GPU加速,采用树形结构分层管理游戏对象类型
- 适用于2D专业级游戏开发
https://www.cocos.com/cocos2d-x
Python 库之虚拟现实
.mp4%22%2C%22size%22%3A53223782%2C%22taskId%22%3A%22uce603154-9171-40a0-9d34-21faf36e180%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483486603-6a1f33fe-07ba-4bca-89f7-8be54c56233c.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22ljxnI%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#ljxnI) VR Zero: 在树莓派上开发VR应用的Python库
- 提供大量与VR开发相关的功能
- 针对树莓派的VR开发库,支持设备小型化,配置简单化
- 非常适合初学者实践VR开发及应用
https://github.com/WayneKeenan/python-vrzero
pyovr: Oculus Rift的Python开发接口
- 针对Oculus VR设备的Python开发库
- 基于成熟的VR设备,提供全套文档,工业级应用设备
- Python+虚拟现实领域探索的一种思路
https://github.com/cmbruns/pyovr
Vizard: 基于Python的通用VR开发引擎
- 专业的企业级虚拟现实开发引擎
- 提供详细的官方文档
- 支持多种主流的VR硬件设备,具有一定通用性
https://www.worldviz.com/vizard-virtual-reality-software
Python 库之图形艺术
.mp4%22%2C%22size%22%3A43957547%2C%22taskId%22%3A%22u08395315-741b-4436-95ca-17e3d9cd13b%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483487697-244c9ab5-f298-43b2-9da7-e7268b9e7c5e.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22CoOH6%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#CoOH6) Quads: 迭代的艺术
- 对图片进行四分迭代,形成像素风
- 可以生成动图或静图图像
- 简单易用,具有很高展示度
https://github.com/fogleman/Quads
ascii_art: ASCII艺术库
- 将普通图片转为ASCII艺术风格
- 输出可以是纯文本或彩色文本
- 可采用图片格式输出
https://github.com/jontonsoup4/ascii_art
turtle
https://docs.python.org/zh-cn/3/library/turtle.html
单元小结
.mp4%22%2C%22size%22%3A24332154%2C%22taskId%22%3A%22u19d16810-6712-42eb-9953-ac7d34b503e%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483489010-805ecf3a-6cb8-4bd2-b5ed-9d196a084869.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22biaYq%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#biaYq) 从人机交互到艺术设计
- PyQt5、wxPython、PyGObject
- PyGame、Panda3D、cocos2d
- VR Zero、pyovr、Vizard
- Quads、ascii_art、turtle
实例 16: 玫瑰花绘制
问题分析
.mp4%22%2C%22size%22%3A18407112%2C%22taskId%22%3A%22uaba87dcc-17d5-452d-8847-3c5943e29b5%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483504224-43140b79-9c6e-46a0-be5e-a2916e637008.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22rskPq%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#rskPq)
实例展示
.mp4%22%2C%22size%22%3A25584009%2C%22taskId%22%3A%22u7e405ccf-d5f1-4262-a0f8-4e7a96d9982%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483504908-185e5545-c3c7-4754-a0e9-e8cf12251183.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22W5gvp%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#W5gvp)
import turtle as t
# 定义一个曲线绘制函数
def DegreeCurve(n, r, d=1):
for i in range(n):
t.left(d)
t.circle(r, abs(d))
# 初始位置设定
s = 0.2 # size
t.setup(450 * 5 * s, 750 * 5 * s)
t.pencolor("black")
t.fillcolor("red")
t.speed(100)
t.penup()
t.goto(0, 900 * s)
t.pendown()
# 绘制花朵形状
t.begin_fill()
t.circle(200 * s, 30)
DegreeCurve(60, 50 * s)
t.circle(200 * s, 30)
DegreeCurve(4, 100 * s)
t.circle(200 * s, 50)
DegreeCurve(50, 50 * s)
t.circle(350 * s, 65)
DegreeCurve(40, 70 * s)
t.circle(150 * s, 50)
DegreeCurve(20, 50 * s, -1)
t.circle(400 * s, 60)
DegreeCurve(18, 50 * s)
t.fd(250 * s)
t.right(150)
t.circle(-500 * s, 12)
t.left(140)
t.circle(550 * s, 110)
t.left(27)
t.circle(650 * s, 100)
t.left(130)
t.circle(-300 * s, 20)
t.right(123)
t.circle(220 * s, 57)
t.end_fill()
# 绘制花枝形状
t.left(120)
t.fd(280 * s)
t.left(115)
t.circle(300 * s, 33)
t.left(180)
t.circle(-300 * s, 33)
DegreeCurve(70, 225 * s, -1)
t.circle(350 * s, 104)
t.left(90)
t.circle(200 * s, 105)
t.circle(-500 * s, 63)
t.penup()
t.goto(170 * s, -30 * s)
t.pendown()
t.left(160)
DegreeCurve(20, 2500 * s)
DegreeCurve(220, 250 * s, -1)
# 绘制一个绿色叶子
t.fillcolor("green")
t.penup()
t.goto(670 * s, -180 * s)
t.pendown()
t.right(140)
t.begin_fill()
t.circle(300 * s, 120)
t.left(60)
t.circle(300 * s, 120)
t.end_fill()
t.penup()
t.goto(180 * s, -550 * s)
t.pendown()
t.right(85)
t.circle(600 * s, 40)
# 绘制另一个绿色叶子
t.penup()
t.goto(-150 * s, -1000 * s)
t.pendown()
t.begin_fill()
t.rt(120)
t.circle(300 * s, 115)
t.left(75)
t.circle(300 * s, 100)
t.end_fill()
t.penup()
t.goto(430 * s, -1070 * s)
t.pendown()
t.right(30)
t.circle(-600 * s, 35)
t.done()
举一反三
.mp4%22%2C%22size%22%3A48786655%2C%22taskId%22%3A%22u7507f769-7dbb-4a96-9066-35baf3812f5%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483505715-27353c21-c821-405b-b240-ff0b49726f99.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22EPYze%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#EPYze)
艺术之于编程,设计之于编程
- 艺术:思想优先,编程是手段
- 设计:想法和编程同等重要
- 工程:编程优先,思想次之
编程不重要,思想才重要!
- 认识自己:明确自己的目标,有自己的思想(想法)
- 方式方法:编程只是手段,熟练之,未雨绸缪为思想服务
- 为谁编程:将自身发展与祖国发展相结合,创造真正价值
作业与练习
.mp4%22%2C%22size%22%3A4240131%2C%22taskId%22%3A%22uc3d286a3-61e8-45e6-b452-622113edded%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688483506881-0283c897-8b40-4ea6-92d7-4beb2c933c37.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22l4DFe%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#l4DFe)
补充
函数式编程
NumPy
NumPy(Numerical Python)是一个用于科学计算和数值运算的 Python 库。它是 Python 数据科学生态系统的核心组件之一,提供了高性能的多维数组(ndarray)对象和广泛的数学函数,以及用于操作数组的工具。
以下是 NumPy 的一些主要特点和功能:
- 多维数组:NumPy的核心是
ndarray
对象,它是一个多维数组,可以存储同类型的数据。NumPy的数组支持高效的数值计算,可以执行向量化运算,大大提高了运算速度。 - 广泛的数学函数:NumPy提供了大量的数学、逻辑、位运算等函数,涵盖了基本的算术运算、三角函数、指数函数、统计函数等。
- 广播(Broadcasting):NumPy的广播功能允许不同形状的数组之间进行算术运算,使得在对不同大小数组进行计算时不需要显式地编写循环。
- 数组操作:NumPy提供了丰富的数组操作函数,包括数组的切片、重塑、连接、拆分等。
- 整合C/C++/Fortran代码:NumPy具有与C、C++和Fortran代码进行整合的能力,这使得NumPy在性能和灵活性方面都非常强大。
- 科学计算支持:NumPy在科学计算领域得到广泛应用,包括线性代数、傅立叶变换、信号处理、图像处理等。
NumPy是Python数据科学生态系统的基础库之一,它与其他Python库(如SciPy、Pandas、Matplotlib等)结合使用,构成了一个强大的数据科学和数值计算平台。由于NumPy提供了高性能的数组操作和数学函数,因此在处理大规模数据、进行数值计算和科学研究时,它是必不可少的工具之一。
Pandas
Pandas 是一个开源的 Python 数据分析库,它提供了丰富而灵活的数据结构和函数,用于处理和分析结构化数据。Pandas是Python数据科学生态系统中非常重要的一个组成部分,广泛应用于数据清洗、数据预处理、数据分析和数据可视化等领域。
Pandas 的主要功能和特点包括:
- 数据结构:Pandas提供了两种主要的数据结构:Series和DataFrame。Series是一维标签数组,类似于带有标签索引的数组;DataFrame是二维表格型数据结构,类似于数据库中的表格。这些数据结构可以容纳多种数据类型,包括数值、字符串、布尔值等,使得Pandas在处理复杂的数据集时非常灵活。
- 数据清洗和处理:Pandas提供了许多函数和方法,用于处理缺失值、重复数据、数据转换、数据过滤、排序等数据清洗和处理任务。这些功能使得数据的准备变得更加简单和高效。
- 数据分析:Pandas支持各种数据操作,如基本的统计分析、聚合、数据透视表、合并、拼接等。这些功能让用户可以方便地对数据进行分析和汇总。
- 时间序列处理:Pandas对时间序列数据有着特别强大的支持,提供了时间索引、滚动窗口、时间偏移等功能,用于处理时间序列数据和时间频率转换。
- 数据可视化:Pandas结合了Matplotlib等可视化库,可以方便地进行数据可视化。DataFrame和Series对象的plot()方法能够快速生成图表,使得数据分析结果的可视化变得简单。
- 数据导入和导出:Pandas支持多种数据格式,包括CSV、Excel、SQL数据库、JSON等,可以方便地将数据导入Pandas进行处理,也可以将处理后的数据导出为其他格式。
总的来说,Pandas是一个功能强大、灵活易用的数据分析库,它的出现使得Python在数据科学和数据分析领域变得更加强大。Pandas为数据科学家、数据分析师和研究者提供了一个强大的工具,用于处理和分析结构化数据,帮助用户更高效地进行数据分析和洞察。
SciPy
SciPy(Scientific Python)是一个开源的Python科学计算库,它建立在NumPy的基础之上,并为NumPy提供了更多的功能和扩展。SciPy旨在提供广泛的数学、科学和工程计算功能,涵盖了信号处理、优化、统计、线性代数、数值积分、插值、图像处理等领域。
SciPy是Python数据科学生态系统中的重要组成部分,它和NumPy、Pandas、Matplotlib等库一起构成了一个强大的数据科学和数值计算平台。
以下是SciPy的一些主要功能和模块:
- 线性代数:SciPy提供了线性代数运算的功能,包括求解线性方程组、矩阵分解、特征值和特征向量计算等。
- 优化:SciPy包含了许多优化算法,用于寻找函数的最小值或最大值,例如最优化、非线性优化、全局优化等。
- 插值:SciPy提供了一系列插值函数,用于在给定数据点上进行插值计算,如样条插值、拉格朗日插值等。
- 统计:SciPy中包含了许多统计函数和分布,用于概率分布、假设检验、频率统计等。
- 信号处理:SciPy提供了信号处理的功能,包括滤波、傅立叶变换、滤波器设计等。
- 数值积分:SciPy提供了数值积分的函数,用于数值求解定积分和常微分方程组等。
- 图像处理:SciPy中的
scipy.ndimage
模块提供了图像处理的功能,包括图像滤波、形态学操作、图像变换等。 - 稀疏矩阵:SciPy支持处理稀疏矩阵,提供了稀疏矩阵存储和运算的功能。
总体而言,SciPy是一个功能强大且完善的科学计算库,它为Python用户提供了广泛的数学、科学和工程计算功能。SciPy的出现使得Python在科学计算领域具备了更强大的竞争力,为数据科学家、工程师和研究人员提供了一个全面的工具箱,用于解决各种数值计算和科学计算问题。