Python基础(九):Python计算生态概览
Python 计算生态概览
9.1 从数据处理到人工智能
9.1.1 数据分析
numpy:表达 n 维数组的最基础库
将 n 维数组看成简单的数据对象进行直接的操作和运算,这是 numpy 最大的价值。
- Python 接口使用,C 语言实现,计算速度优异
- Python 数据分析和科学计算的基础库
- 提供直接的矩阵运算、广播函数、线性代数等功能
pandas
提供了简单易用的数据结构和数据分析工具
由两种数据结构组成:
Series
和DataFrame
Series
是由数字构成的列表,其中每个元素都有数据和索引DataFrame
类似电子表格,同时具有行和列索引,可以将其看作是由Series
构成的字典Python 最主要的数据分析功能库,基于 numpy 开发
scipy
- 提供了一批数学算法及工程数据运算功能
- Python 最主要的科学计算功能库,基于 numpy 开发
9.1.2 数据可视化
matplotlib:高质量的二维数据可视化功能库
- 提供了超过 100 种数据可视化展示效果
- 通过 matplotlib.pyplot 子库调用可视化效果
- Python 最主要的数据可视化功能库,基于 numpy 开发
seaborn:统计类数据可视化功能库
- 提供了一批高层次的统计类数据可视化展示效果
- 基于 matplotlib 开发,支持 numpy 和 pandas
mayavi:三维科学数据可视化功能库
9.1.3 文本处理
pypdf2:用来处理 pdf 文件的工具集
NLTK:自然语言文本处理第三方库
- 提供了一批简单易用的自然语言文本处理功能
- 最优秀的 Python 自然语言处理库
Python-docx:创建或更新 Word 文件的第三方库
9.1.4 机器学习
scikit-learn:机器学习方法工具集
- 提供一批统一化的机器学习方法功能接口
- 提供分类、回归、聚类、强化学习等计算功能
- 基于 NumPy、SciPy 和 matplotlib 构建
TensorFlow:机器学习计算框架
MxNet:基于神经网络的深度学习计算框架
9.2 从web解析到网络空间
9.2.1 网络爬虫
requests:网络爬虫功能库
scrapy:网络爬虫框架
pyspider:web 页面爬取系统
9.2.2 web信息提取
beautifulsoup4:HTML 和 XML 的解析库
re:正则表达式解析和处理功能库
Python最主要的标准库之一,无需安装
Python-Goose:提取文章类型 web 页面的功能库
9.2.3 web网站开发
Django:复杂的 web 应用框架
Pyramid:中规模的 web 应用框架
Flask:web 应用开发微框架
提供了最简单的构建 web 系统的应用框架
9.2.4 网络应用开发
WeRoBot:微信公众号开发框架
aip:百度 AI 开放平台接口
MyQR:二维码生成第三方库
9.3 从人机交互到艺术设计
9.3.1 图形用户界面
PyQt5:Qt 开发框架的 Python 接口
wxPython:专用于 Python 的跨平台 GUI 开发框架
PyGObject:使用 GTK+ 开发 GUI 的功能库
GTK+ 是一套跨多种平台的图形工具包
9.3.2 游戏开发
PyGame:简单的游戏开发功能库
Panda3D:开源跨平台的 3D 渲染和游戏开发库
cocos2d:构建2d游戏和图形界面交互式应用的框架
9.3.3 虚拟现实
VR Zero:在树莓派上开发 VR 应用的 Python 库
pyovr:针对 Oculus 公司 VR 设备的库
Vizard:基于 Python 的通用 VR 开发引擎
9.3.4 图形艺术
Quads:展示迭代艺术的第三方库
ascii_art:采用 ASCII 码展示图形艺术的第三方库
turtle:海龟绘图体系
导图
Tips
NumPy
介绍
NumPy 是 Python 科学计算的基本库,提供了多维数组对象、各种派生对象(如矩阵)和一系列用于对数组进行快速操作的例程,包括数学、逻辑、形状操作、排序、选择、I/O、离散傅里叶变换、基本线性代数、基本统计操作、随机模拟等等。
NumPy 库的核心是 ndarray 对象。NumPy 数组和标准 Python 序列之间有几个重要的区别:
- NumPy 数组在创建时具有固定的大小,与 Python 列表(可以动态增长)不同。更改 ndarray 的大小将创建一个新数组并删除原始数组。
- NumPy 数组中的元素都具有相同的数据类型,因此在内存中的大小相同。
- NumPy 数组有助于对大量数据进行高级数学和其他类型的操作。与使用 Python 的内置序列相比,此类操作的执行效率更高,代码更少。
创建数组
import numpy as np
函数 作用 np.array()
创建一个数组。参数传递一个 python 序列 np.zeros()
返回一个给定形状和类型的新数组,用 0
填充。np.ones()
返回一个给定形状和类型的新数组,用 1
填充。np.empty()
返回给定形状和类型的新数组,初始内容是随机的,取决于内存的状态。 np.arange()
返回给定间隔内均匀分布的数组,指定范围和步长。 np.linspace()
返回指定间隔内均匀分布的数组,指定范围和个数。 数组属性
属性 作用 ndarray.shape
数组维度的元组。通常用于获取数组的当前形状。 ndarray.ndim
数组维度的数量,即轴的数量,称为秩。 ndarray.size
数组中的元素数。 ndarray.itemsize
一个数组元素的长度(以字节为单位)。 ndarray.dtype
数组元素的数据类型。 索引和切片:像对 Python 列表进行切片一样对 NumPy 数组进行索引和切片。
如果要从数组中选择满足特定条件的值, NumPy 很简单。
print(a[(a > 2) & (a < 11)])
从现有数据创建数组:
函数 作用 np.vstack((a1, a2))
垂直堆叠两个现有阵列 np.hstack((a1, a2))
水平堆叠两个现有阵列 np.hsplit(x, 3)
将数组 x 拆分为三个形状相等的数组 b = a
简单赋值不会复制对象或其数据。 c = a.view()
浅拷贝,创建一个查看相同数据的新数组对象 d = a.copy()
深拷贝,创建数组及其数据的完整副本。 数组操作
基本操作:加
+
、减-
、乘*
、除/
、求和ndarray.sum()
广播:NumPy 明白基本操作应该发生在每个元素上。
更有用的操作:
ndarray.max()
、ndarray.min()
其他操作:
函数 作用 np.flip()
反转数组 ndarray.flatten()
将阵列展平为一维数组 使用 Matplotlib 绘制数组
Matplotlib
matplotlib.pyplot
介绍:
matplotlib.pyplot
是一个函数集合,使得 matplotlib 像 MATLAB 一样工作。每个函数对图形进行一些更改: 例如,创建一个图形,在图形中创建绘图区域,在绘图区域中绘制一些线条,用标签等装饰绘图。import matplotlib.pyplot as plt
一些绘图命令
函数 作用 plt.figure()
创建新图形 plt.grid()
配置网格线 plt.plot()
将 x 与 y 绘制为线条或标记 plt.subplot()
将子图添加到当前图形 plt.show()
展示所有打开的图形 plt.text()
将文本 s 添加到坐标 (x,y) 处的轴 plt.title()
设置轴的标题 plt.xlabel()/plt.ylabel()
设置 x / y 轴的标签 plt.xlim()/plt.ylim()
获取或设置当前轴 x / y 的范围