零基础学AI人工智能:7.3 算法和数据结构之Numpy和Matplotlib
在前两篇内容中,我们先后掌握了 Linux 系统环境与数据库 SQL 操作,搭建了数据存储与运行的基础环境。在数据处理与统计分析的完整流程中,数值计算与数据可视化是两个核心环节:高效的数值运算能支撑大规模数据的统计与变换,直观的可视化图表能帮助我们快速发现数据规律、验证分析结论。
本篇作为系列第三篇,我们将系统讲解 NumPy 与 Matplotlib 两大核心工具:NumPy 是 Python 生态中数值计算的底层基础,Matplotlib 是数据可视化的经典工具。
一、NumPy:高性能数值计算工具
1.1 NumPy 核心概述
NumPy 是专门用于数组操作与数值计算的工具库,核心载体是多维同类型数组对象。它底层由 C 语言实现,采用连续内存存储与向量化运算机制,相比 Python 原生列表运算效率更高、内存占用更低,支持批量的数值运算,是数据分析、机器学习、科学计算领域的底层依赖工具,绝大多数数据处理与 AI 框架都基于 NumPy 的数组体系构建。
1.2 多维数组的核心属性
多维数组是 NumPy 的核心数据结构,它有五个核心属性,分别从维度、形状、规模、类型等维度描述数组特征:
- 轴数(维度数):表示数组的轴的数量,也就是数组的维度。一维数组有 1 个轴,二维数组有 2 个轴,维度越高轴的数量越多。
- 形状:描述数组每个维度的长度,以元组形式呈现,直观体现数组的行列数与层级结构,形状的长度等于数组的轴数。
- 元素总数:表示数组中包含的所有元素的总个数,等于形状中各个维度长度的乘积。
- 数据类型:描述数组中每个元素的数据类型,同一个数组内所有元素的数据类型保持一致。
- 元素字节数:表示数组中单个元素在内存中占用的字节大小,由数组的数据类型决定。
1.3 多维数组的创建方式
NumPy 提供了多种数组创建方式,适配不同的业务场景:
- 直接转换创建:将已有的序列数据直接转换为多维数组,适合已有原始数据的场景。
- 全零数组创建:生成所有元素均为 0 的数组,常用于初始化占位数据。
- 全一数组创建:生成所有元素均为 1 的数组,常用于矩阵运算的单位初始化。
- 连续序列数组创建:生成指定范围内的连续数值序列数组,类似原生的序列生成但运算效率更高。
- 随机数组创建:生成符合指定分布的随机数数组,支持均匀分布、整数分布、正态分布等多种随机模式。
- 等间距数组创建:在指定区间内生成固定数量的等间距数值数组,常用于坐标轴刻度、采样点生成。
1.4 常用基础运算函数
NumPy 内置了大量基础数值处理函数,可直接对数组内所有元素批量执行运算,无需逐元素遍历:
- 向上取整:对数组内所有元素取大于等于该值的最小整数。
- 向下取整:对数组内所有元素取小于等于该值的最大整数。
- 取绝对值:计算数组内所有元素的绝对值。
- 空值判断:判断数组内每个元素是否为空值,返回布尔形式的结果数组。
- 元素乘法:对两个数组的对应位置元素执行乘法运算。
- 元素除法:对两个数组的对应位置元素执行除法运算。
- 位置查找:查找符合指定条件的元素的位置索引。
- 四舍五入:对数组内所有元素按指定精度执行四舍五入。
1.5 统计类函数
NumPy 提供了完整的统计计算函数,是数据统计分析的核心工具,支持对整个数组或指定轴方向执行统计计算:
- 平均值:计算数组内元素的算术平均值。
- 最小值:查找数组内的最小元素。
- 最大值:查找数组内的最大元素。
- 求和:计算数组内所有元素的总和,支持按行或按列分别求和。
- 累加和:依次计算数组元素的累计和,返回与原数组形状一致的累加结果。
- 标准差:计算数组数据的标准差,反映数据的离散程度。
- 方差:计算数组数据的方差,是衡量数据波动程度的核心统计指标。
补充说明:轴是 NumPy 的重要概念,二维数组中 0 轴对应行索引变化的方向,沿列执行聚合计算;1 轴对应列索引变化的方向,沿行执行聚合计算。通过指定轴可以实现按行或按列的分组统计,运算后对应维度会被压缩消失。
1.6 排序与去重函数
- 排序函数:对数组内的元素按从小到大的顺序重新排列,支持按指定轴排序。
- 去重函数:去除数组内的重复元素,返回所有唯一的元素值,常用于数据清洗、唯一值统计。
1.7 数组运算规则
NumPy 的数组运算分为标量运算、数组对应元素运算、矩阵乘法三类,各自有不同的规则与适用场景:
- 数组与标量的运算:数组中的每个元素都会和该数值执行对应运算,属于广播运算的一种,无需数组形状匹配。
- 两个数组的对应元素运算:要求两个数组的形状完全一致,运算时两个数组对应位置的元素分别执行运算,返回相同形状的结果数组。
- 矩阵乘法:属于线性代数运算,有严格的形状要求:第一个数组的列数必须等于第二个数组的行数;运算过程为第一个数组的行与第二个数组的列对应元素相乘后求和,最终结果的行数等于第一个数组的行数,列数等于第二个数组的列数。
二、Matplotlib:数据可视化绘图工具
2.1 Matplotlib 核心概述
Matplotlib 是 Python 生态中最经典的绘图可视化工具,作用是将数值数据转化为各类可视化图表,让数据的趋势、分布、对比关系更直观地呈现,是数据分析结果展示、规律验证、报告输出的核心工具。
使用 Matplotlib 绘图前需要先导入对应的工具模块,同时需要配置中文字体,避免图表中的中文内容出现乱码问题。它与 NumPy 高度兼容,可直接接收 NumPy 数组作为绘图数据源,无需额外格式转换。
2.2 完整图表的绘制流程
以最基础的折线图为例,绘制一张完整的图表分为六个标准步骤:
- 准备数据集:整理需要可视化的原始数据,确定横纵轴对应的数据源。
- 创建画布:初始化绘图的画布容器,可自定义画布大小与分辨率。
- 绘制核心图形:调用对应图表的绘制方法,将数据映射为图形元素。
- 设置图表细节:完善图表的辅助元素,包含五个细分操作:
- 设置 x 轴与 y 轴的刻度值、刻度标签,调整坐标轴的展示范围;
- 设置图例,标注不同数据系列的含义;
- 设置网格线,提升数据读取的便捷性;
- 设置 x 轴、y 轴的标签名称,说明坐标轴的业务含义;
- 设置图表的标题,说明整张图表的主题。
- 保存图片:将绘制完成的图表保存为本地图片文件,支持多种图片格式。
- 显示图片:在运行窗口中弹出展示绘制完成的图表。
2.3 高级绘图扩展能力
除了基础的单图绘制,Matplotlib 还支持更复杂的绘图场景:
- 多子图绘制:在同一张画布中划分多个子绘图区域,每个区域绘制独立的图表,适合多组数据的对比展示。
- 面向对象式绘图:通过创建坐标系对象的方式控制绘图,更灵活地控制画布布局、多坐标系管理,适合复杂的定制化图表开发。
2.4 常用图表类型与适用场景
Matplotlib 支持多种图表类型,不同图表适配不同的分析场景:
- 折线图:一般用于分析数据的变化趋势,展示数据随时间或连续变量的变化规律。
- 柱状图:一般用于固定分类的数值对比,直观展示不同类别之间的数值差异。
- 直方图:一般用于连续数值的分布统计,展示数据在不同区间的分布密度。
- 饼图:一般用于展示少量分类的占比情况,直观呈现各分类在整体中的占比关系。
- 散点图:一般用于查看数据的分布特征、离散程度,也可用于分析两个变量之间的相关性。
三、逻辑图

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)