【Python 数据分析入门】NumPy 库超详细指南:安装、基础用法与经典案例
NumPy(Numerical Python)是 Python 科学计算的核心库,是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。主要用于处理多维数组对象和一系列数学函数。它就像是数据分析的 "地基",后续要学的 Pandas、Matplotlib 等神器都是基于它搭建的哦
Hello 大家好~今天带大家认识 Python 数据分析的 "瑞士军刀"——NumPy 库!即使是编程小白也能轻松看懂哦~全文包含超详细安装教程、基础用法解析,还有超实用的经典案例,手把手教你玩转 NumPy!😊
一、NumPy 是什么?为什么要学它?
NumPy(Numerical Python)是 Python 科学计算的核心库,主要用于处理多维数组对象和一系列数学函数。它就像是数据分析的 "地基",后续要学的 Pandas、Matplotlib 等神器都是基于它搭建的哦~
🌟 核心优势:
- 比 Python 原生列表快 10-100 倍的运算速度(底层用 C 语言实现)
- 支持向量化操作(一行代码搞定批量运算)
- 内置丰富的数学函数(统计、线性代数、傅里叶变换等)
- 方便的广播机制(不同形状数组直接运算)
二、超详细安装教程(3 分钟搞定!)
方法 1:用 pip 安装(推荐)
打开命令行(Windows 用 cmd,Mac/Linux 用终端),输入:
pip install numpy
安装完成后,在 Python 中验证:
import numpy as np # 习惯缩写为np
print(np.__version__) # 输出版本号,比如1.26.0就成功啦~
如果观众老爷们使用了Pycharm软件编写python代码,还有一种更加简单粗暴的方法安装numpy
import numpy as np#直接在py文件里编写import导入
#此时numpy字段会变红报错,此时鼠标点击numpy,然后键盘alt+enter就可以出现导包选项
方法 2:Anaconda 用户专属
如果你安装了 Anaconda,直接在命令行输入:
conda install numpy
遇到问题怎么办?🤔
- 网络卡顿?试试加国内镜像:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
三、NumPy 基础用法:从数组开始
1. 创建数组(Ndarray 对象)
NumPy 的核心是ndarray(多维数组),和 Python 列表的区别是:所有元素类型必须相同,且大小固定。
创建方式一:从列表转换
arr = np.array([1, 2, 3, 4]) # 一维数组
print(arr) # 输出:[1 2 3 4]
matrix = np.array([[1, 2], [3, 4]]) # 二维数组(矩阵)
print(matrix)
# 输出:
# [[1 2]
# [3 4]]
创建方式二:生成特殊数组
zeros_arr = np.zeros((3, 4)) # 3行4列全0数组
ones_arr = np.ones((2, 2)) # 2行2列全1数组
empty_arr = np.empty((2, 3)) # 初始随机值数组(速度最快)
range_arr = np.arange(10) # 生成0-9的数组,类似Python的range
linspace_arr = np.linspace(0, 10, 5) # 0到10均匀分成5个数:[0. 2.5 5. 7.5 10.]
2. 数组属性:快速了解数据结构
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape) # 形状:(2, 3)(2行3列)
print(arr.dtype) # 数据类型:int64(默认整数类型)
print(arr.size) # 元素总数:6
print(arr.ndim) # 维度:2(二维数组)
3. 数组索引与切片:和列表类似但更强大!
arr = np.array([1, 2, 3, 4, 5])
print(arr[2]) # 索引:输出3
print(arr[1:4]) # 切片:输出[2, 3, 4](左闭右开)
# 二维数组操作
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix[1, 2]) # 取第2行第3列元素:6
print(matrix[:, 1]) # 取所有行的第2列:[2, 5, 8]
print(matrix[1:, :2]) # 从第2行开始,取前2列:[[5,6]]
4. 数组运算:向量化操作超爽!
不需要写循环!直接对整个数组进行运算~
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 加减乘除(对应元素运算)
print(a + b) # [5 7 9]
print(a * b) # [4 10 18]
# 矩阵乘法(用@符号或dot方法)
mat1 = np.array([[1, 2], [3, 4]])
mat2 = np.array([[5, 6], [7, 8]])
print(mat1 @ mat2)
# 输出:
# [[19 22]
# [43 50]]
# 广播机制:不同形状数组运算
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr + 10) # 每个元素加10:[[11 12 13],[14 15 16]]
print(arr * np.array([10, 20, 30])) # 按列相乘:[[10,40,90],[40,100,180]]
矩阵乘法规则:
前提条件
两个矩阵 A(m×n 阶)和 B(p×q 阶)可以相乘,当且仅当 第一个矩阵的列数 n 等于 第二个矩阵的行数 p,即 n=p。结果矩阵 C 的阶数为 m×q。
关键特性
不满足交换律:一般情况下 AB≠BA。
满足结合律:(AB)C=A(BC)。
分配律:A(B+C)=AB+AC。
矩阵的乘法与行列式的乘法类似。
此时AB和BA是完全不同的两个答案
四、NumPy 在数据分析中的核心作用
1. 高性能数值计算
- 处理大规模数据时,避免 Python 循环的低效性
- 底层 C 语言实现,支持并行计算(虽然需要配合其他库)
2. 数据预处理
- 快速填充缺失值(用 np.nan 表示缺失,配合掩码操作)
- 数据类型转换(astype 方法)
- 数组重组(reshape、flatten 等方法)
3. 数学与统计分析
内置大量统计函数:
arr = np.array([1, 2, 3, 4, 5, 5])
print(np.mean(arr)) # 均值:3.5
print(np.std(arr)) # 标准差:1.7078251276600336
print(np.max(arr)) # 最大值:5
print(np.min(arr)) # 最小值:1
print(np.unique(arr)) # 去重:[1 2 3 4 5]
五、经典案例实战(附完整代码)
案例 1:学生成绩统计分析
问题:计算全班 50 名学生 3 门课的平均分、最高分、最低分,以及每门课的标准差。
# 生成随机成绩(0-100分,50行3列)
scores = np.random.randint(0, 101, size=(50, 3))
# 计算每行平均分(每个学生的平均分)
student_avg = np.mean(scores, axis=1) # axis=1表示按行计算
print("学生平均分前5名:", student_avg[:5])
# 计算每列统计量(每门课的统计)
subject_stats = np.array([
np.mean(scores, axis=0), # 平均分
np.max(scores, axis=0), # 最高分
np.min(scores, axis=0), # 最低分
np.std(scores, axis=0) # 标准差
])
print("\n每门课统计量(行:均值、最大值、最小值、标准差):")
print(subject_stats)
案例 2:蒙特卡洛模拟抛硬币
问题:模拟抛 10000 次硬币,计算正面朝上的概率,观察是否接近 50%。
np.random.seed(42) # 固定随机种子,结果可复现
coin_flips = np.random.choice([0, 1], size=10000) # 0=反面,1=正面
head_probability = np.mean(coin_flips)
print(f"模拟抛硬币正面概率:{head_probability:.4f}") # 输出接近0.5
六、总结与学习建议
📝 今日重点回顾:
- NumPy 是 Python 数据分析的基础,核心是 ndarray 数组
- 安装简单,用pip install numpy即可
- 数组创建、索引、运算和统计函数是基本功
- 在高性能计算、数据预处理、数学分析中不可或缺
🚀 学习建议:
- 动手练习:每个知识点都自己敲一遍代码(案例代码直接复制到 IDE 运行)
- 官方文档:英文好的同学直接看NumPy 官方文档,中文可看菜鸟教程
- 后续学习:掌握 NumPy 后,接下来可以学 Pandas(处理表格数据)和 Matplotlib(数据可视化)
💬 互动时间:
你在学习 NumPy 时遇到过哪些问题?或者想了解哪个功能的深入用法?欢迎在评论区留言,我会逐一解答哦~下次我们将带来 Pandas 的入门教程,记得关注不迷路!
希望这篇教程能帮你打开数据分析的大门~祝你学习顺利,代码无 bug!🎉

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)