当前位置:首页>python>AI编程时代更需要的底层能力培养,Python数据分析(一) | NumPy基础教程+面试题串讲

AI编程时代更需要的底层能力培养,Python数据分析(一) | NumPy基础教程+面试题串讲

  • 2026-10-11 08:10:14
AI编程时代更需要的底层能力培养,Python数据分析(一) | NumPy基础教程+面试题串讲
本系列是我之前给学生们培训『如何利用Python进行数据分析』的课程代码,即使在AI coding盛行的时代,它也是非常实用且必要的学习项。
AI时代,古法编程已是一股清流,但相信我,
那些花在啃底层、拆原理、写原生代码上的时间,最终都会变成你在AI时代的核心竞争力!
(阅读原文,查看如何应对新型开发者的冲击)

Python数据分析系列教程

1. NumPy基础教程+面试题串讲(本篇)

2. Pandas基础教程+面试题串讲

3. Matplotlib+seaborn可视化教程

4. 能力打通:iris数据可视化分析

课程代码(教学级)和数据集已整理到网盘,内容更全面,

关注『AI Power Lab』,对话框输入“numpy”免费获取~

NumPy(Numerical Python)是 Python 科学计算生态中的核心库,也是数据分析、机器学习、深度学习的重要基础。
本教程基于我的课程代码内容,系统学习以下核心主题:
  1. 创建 NumPy 数组
  2. 数组索引与切片
  3. 文件读取
  4. 布尔型索引
  5. 数组运算
  6. 常用统计函数
  7. 综合练习
熟练掌握数组操作、布尔索引、广播和统计函数后,你将具备进入数据分析、AI建模、自动化处理、科学计算等领域的重要基础。

01

为什么是Numpy

NumPy 的主要优势
相比普通 Python 列表(List),NumPy 提供了,
  • 更高效的多维数组对象 ndarray
  • 向量化运算(无需大量循环)
  • 更快的数学运算性能
  • 丰富的数据处理函数
  • 广泛兼容 pandas、scikit-learn 等高级工具
安装方式
前提是你的电脑已经安装python、anaconda(推荐)等软件
pip install numpy #不指定版本号,默认安装最新版pip install numpy==<版本号> #指定版本号
导入方式
import numpy as np
通常使用 np 作为简称,方便后续调用

02

Numpy的几个必备基础操作

1、创建 NumPy 数组
创建一维数组
value = [1, 2, 3]arr1d = np.array(value)print(arr1d)# 输出[1 2 3]
  • np.array() 可以将列表转换为 NumPy 数组
  • 元素之间无逗号,是 NumPy 的显示风格
创建二维数组
value2 = [["name", "gender", "age"],          ["Tom", "Male", "18"]]arr2d = np.array(value2)print(arr2d.ndim)print(arr2d.shape)# 输出2(2, 3)
关键属性
  • ndim:维度数量
  • shape:数组形状(行数,列数)
快速生成数组
np.zeros((3,5))  #生成3行5列的全0数组np.ones(5) #生成维度为[1,5]的全1数组np.empty(5) #生成维度为[1,5]的未初始化数组np.arange(3,10,3) #生成的3开始10结束步长为3的等差数列np.random.randint(1,30,size=(3,5)) #生成3行5列的在[1,30]之间的随机整数数组

2、索引和切片
数组索引用于获取元素,切片用于获取子数组。
一维数组操作
arr = np.arange(10)# 输出[0 1 2 3 4 5 6 7 8 9]# 单个索引arr[3] # 输出 3# 切片arr[3:7] # 输出 [3 4 5 6]
二维数组操作
# 生成矩阵mat = np.arange(1,17)mat.shape = (4,4)# 输出[[ 1  2  3  4] [ 5  6  7  8] [ 9 10 11 12] [13 14 15 16]]# 获取某一行mat[0]# 获取多行mat[1:3]# 获取单个元素mat[1,3]# 输出8
行列混合切片
# 获取第0到第2行的第1列mat[0:3,1]# 获取第2行到行末尾,以及第2列到列末尾mat[2:,2:]
避坑指南
NumPy 切片通常返回的是“视图(view)”,而非副本,这意味着修改切片可能直接影响原数组,这也是Numpy高性能的重要原因之一。

3、读取&提取数据
NumPy 可直接读取结构化文本数据。
示例:读取红酒质量数据集
数据集已整理到网盘,关注『AI Power Lab』,对话框输入“numpy”免费获取
wine_data = np.genfromtxt(r'/<数据路径>/winequality-red.csv',    delimiter=';',    skip_header=1)
参数说明
  • delimiter=';':分隔符为分号
  • skip_header=1:跳过标题行 
提取部分字段
wine = wine_data[:10,[8,10,11]]
表示提取前10行中的,
  • pH值(第9列)
  • 酒精度(第11列)
  • 质量评分(第12列)
这种按列选择的方式在数据分析中非常常见

4、布尔型索引
布尔索引是 NumPy 最强大的功能之一,通过条件筛选数组元素。
筛选评分大于5的数据
wine[wine[:,2] > 5]
  • wine[:,2]:取第3列评分
  • >5:生成 True/False 数组
  • 用布尔数组筛选原数据
多条件筛选
wine[(wine[:,2] > 5) & (wine[:,1] >= 10)]
条件,
  • 评分 > 5
  • 酒精度 >= 10
常用逻辑运算

5、数组运算
NumPy 的核心优势是“向量化”
数组与数字运算
每个元素自动参与运算
mat / 2(mat + 100) / 100
与列表对比
NumPy
arr7 = [1,2,5]arr7 * 2# [元素分别乘2]# 输出[2,4,10]
列表
list = [1,2,5]list * 2# 输出[1,2,5],[1,2,5]
结果是重复列表,而不是元素计算。
数组与数组之间运算
arr8 + arr8np.add(arr8, arr8)
两个形状一致的数组可逐元素计算。
广播机制(Broadcasting)
wine - wine[0] # 每一行都减去第一行
广播机制允许不同形状数组自动扩展,大幅提升灵活性

6、常用统计函数
求和
np.sum(wine)np.sum(wine, axis=0)
平均值
np.mean(wine, axis=0)
  • axis=0:按列
  • axis=1:按行
最大值与最小值
np.max(wine, axis=0)np.min(wine, axis=0)
排序
np.sort(wine[:,0])
去重
np.unique(wine[:,2])
条件赋值
np.where(wine[:,2] > 5, 'Good', 'Bad')
  • 大于5 → Good
  • 否则 → Bad

03

实操:学生成绩分析

数据
[]里的内容可以自行填写,如["张三", "李四", ...],[70, 53, ...]
names = np.array([...])scores = np.array([...])
找出不及格学生
names[scores < 60]
统计信息
np.max(scores)np.min(scores)np.mean(scores)np.var(scores)np.std(scores)
转换等级成绩
np.where(scores >= 90, 'A',         np.where(scores >= 70, 'B', 'C'))
基于上述统计和转换,就可以开始更深入一层的分析工作了,发挥你的好奇心和脑洞,会有很多有意思的发现哦~

已经读到这里啦,来个点赞、喜欢和关注吧~

期待你在评论区分享想法和见解,也欢迎交个朋友。

想要第一时间收到推送,可以给我一个星标⭐哦!

你们的支持和鼓励,是我持续更新的最大动力 ❥(^_-)

04

高频面试题串讲

下面是Numpy相关高频面试题,我只给出回答要点
NumPy 面试核心就三块,
  • 数据结构(ndarray)
  • 运算能力(向量化 + 广播)
  • 数据处理(索引 + 统计)

1.NumPy 的核心对象是什么?与 Python list 有什么区别?
关键点:
  • 核心对象:ndarray
  • 连续内存存储,类型统一(dtype)
  • 支持向量化运算(无需显式 for 循环)
  • 性能远高于 list(C 实现)
2.NumPy 切片和 Python 切片的区别?
关键点:
  • NumPy 切片返回“视图(view)”
  • 修改切片会影响原数组
3.什么是布尔索引?
  • 用条件表达式生成 True/False 数组
  • 用该数组筛选数据
4.什么是广播机制(Broadcasting)?
广播机制是 NumPy 在进行数组运算时,自动把不同形状的数组“扩展”为相同形状,从而完成逐元素运算的一种规则。
关键点:
  • 不同形状数组自动扩展以匹配
  • 从右往左对齐维度
  • 维度为 1 的可以扩展
示例:
import numpy as npA = np.array([    [1, 2, 3],    [4, 5, 6]])   # shape (2, 3)B = np.array([10, 20, 30])  # shape (3,)A + B# 第一步:对齐维度A: (2, 3)B: (1, 3)# 第二步:广播扩展B → (2, 3)[[10, 20, 30], [10, 20, 30]]# 第三步:逐元素计算[[11, 22, 33], [14, 25, 36]]
5.view 和 copy 的区别?
b = a[1:3]      # viewc = a[1:3].copy()  # copy
  • view:共享内存
  • copy:独立内存
跟着本文,你已经学会了如何安装numpy,如何创建数组、索引切片、布尔筛选、广播、条件处理、统计等数据分析必备技能,踏出了迈向高级数据科学的第一步,超棒 ~❥(^_-)
下一期我们讲解Numpy的好兄弟——Pandas的安装和使用,用好这俩兄弟,你已经在Python数据分析路上行至半程,继续加油吧!
AI时代,古法编程已是一股清流,但相信我,
那些花在啃底层、拆原理、写原生代码上的时间,最终都会变成你在AI时代的核心竞争力!

课程代码(教学级)和数据集已整理到网盘,内容更全面,

关注『AI Power Lab』,对话框输入“numpy”免费获取~

已经读到这里啦,来个点赞、喜欢和关注吧~

期待你在评论区分享想法和见解,也欢迎交个朋友。

想要第一时间收到推送,可以给我一个星标⭐哦!

你们的支持和鼓励,是我持续更新的最大动力 ❥(^_-)

往期推荐

智能体搭建| 如何用OpenClaw搭建你的“一人公司”(附完整配置模板)

我用Andrej Karpathy的LLM wiki思路实现了“活”的个人知识库(附模板)

你一定用得上的智能体skills推荐,主流技能市场盘点

OpenClaw进化| Obsidian+Ollama,用RAG打造真正懂你的小龙虾

新手养虾也能如此简单!OpenClaw+飞书快速上手指南

最新文章

随机文章