🐍 Python数据分析:用 NumPy 打好数据科学的地基
在 Python 数据分析的世界里,有一个库几乎无处不在------它就是 NumPy。无论你是想做机器学习、科学计算,还是简单的数据清洗与可视化,NumPy 都是你绕不开的第一块基石。
今天,我们就来系统梳理一下 NumPy 的核心功能,带你快速上手这个"数值计算神器"。
🔢 什么是 NumPy?
NumPy(Numerical Python)是一个开源的 Python 库,专为高效处理多维数组 而生。它的核心是 ndarray(N-dimensional array)对象------一种能存储同类型数据的多维容器。相比 Python 原生的列表(list),NumPy 数组在内存中连续存储、支持向量化运算,速度更快、语法更简洁。
❝
💡 小知识:NumPy 虽然诞生于 2005 年,但其思想可追溯到 1995 年的 Numeric 库。如今,它是 SciPy、Pandas、Matplotlib 等众多科学计算库的底层支柱。
🧱 创建数组:你的第一块"数据砖"
NumPy 提供了多种创建数组的方式:
-
从列表/元组转换:
import numpy as np arr = np.array([1, 3, 5, 7]) # 一维 matrix = np.array([[1,2],[3,4]]) # 二维 -
生成等差数列:
np.arange(0, 10, 2) # [0, 2, 4, 6, 8] np.linspace(0, 1, 5) # [0. , 0.25, 0.5 , 0.75, 1. ] -
特殊数组:
np.zeros((3, 3)) # 全0矩阵 np.ones((2, 4)) # 全1矩阵 np.eye(4) # 单位矩阵 -
随机数生成(常用于模拟和初始化):
np.random.rand(3, 2) # [0,1) 均匀分布 np.random.randint(10, 20, size=(2,3)) # 指定范围整数
🔄 数组变形与组合:灵活操控数据结构
实际工作中,数据形状经常需要调整:
-
重塑(reshape):
arr = np.arange(12) arr.reshape(3, 4) # 变成 3×4 矩阵 # 也可以用 -1 自动推断:arr.reshape(-1, 4) -
合并:
a = np.array([[1],[2]]) b = np.array([[3],[4]]) np.hstack((a, b)) # 横向拼接 → [[1,3], [2,4]] np.vstack((a, b)) # 纵向拼接 → [[1],[2],[3],[4]] -
分割:
arr = np.arange(16).reshape(4,4) np.hsplit(arr, 2) # 横向切两半 np.vsplit(arr, 2) # 纵向切两半 -
转置:
arr.T # 最简洁的转置方式
🔍 索引与切片:精准定位数据
NumPy 的索引比 Python 列表更强大:
-
基础切片(返回视图,不复制数据):
arr = np.arange(10) arr[2:5] # [2,3,4] arr[::-1] # 反转 -
多维索引:
mat = np.arange(12).reshape(3,4) mat[0, 1:3] # 第0行,第1~2列 → [1, 2] mat[:, 2] # 所有行,第2列 -
布尔索引 & 花式索引:
mask = mat > 5 mat[mask] # 返回所有大于5的元素
➕ 向量化运算:告别 for 循环!
NumPy 最大的优势之一:无需显式循环即可对整个数组进行运算。
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
a + b # [5, 7, 9]
a * 2 # [2, 4, 6]
a ** 2 # [1, 4, 9]
更厉害的是 广播机制(Broadcasting):即使两个数组形状不同,NumPy 也能智能地"扩展"它们以完成运算。
例如,一个 (3,4) 矩阵加上一个长度为 4 的向量,NumPy 会自动将向量加到每一行!
📊 统计与分析:从数据中提取洞察
NumPy 内置了丰富的统计函数:
arr = np.random.rand(4, 5)
np.mean(arr) # 整体均值
np.sum(arr, axis=0) # 每列求和
np.std(arr, axis=1) # 每行标准差
np.min(arr), np.max(arr)
还有实用工具:
-
np.sort():排序 -
np.unique():去重 -
np.where(condition, x, y):条件赋值(类似 Excel 的 IF)
💾 读写数据:保存你的成果
分析完的数据总要存下来:
-
二进制格式(推荐,快且省空间):
np.save('data.npy', arr) loaded = np.load('data.npy') -
文本/CSV 格式:
np.savetxt('data.csv', arr, delimiter=',') loaded = np.loadtxt('data.csv', delimiter=',')
✅ 结语
NumPy 看似简单,却是数据科学大厦的钢筋水泥。掌握它,你不仅能写出更高效的代码,还能为后续学习 Pandas、Scikit-learn 打下坚实基础。
❝
🌟 小练习建议 :
尝试用 NumPy 完成以下任务:
创建一个 10×10 的矩阵,边界为 1,内部为 0;
生成 1000 个服从正态分布的随机数,并计算其均值与标准差;
对一个二维数组,找出每行的最大值及其位置。
动手,才是最好的学习方式。
如果你觉得这篇文章有帮助,欢迎点赞、转发,也欢迎在评论区分享你的 NumPy 使用技巧!下期我们将走进 Pandas,看看如何用它玩转表格数据 👋