0. NumPy 系列教程:科学计算与数据分析实战

NumPy 系列教程:科学计算与数据分析实战

在 Python 科学计算和数据分析的生态系统中,NumPy(Numerical Python) 扮演着基础而关键的角色。它提供了高效的多维数组对象,以及丰富的数值计算函数库。本系列教程共 12 篇,系统讲解了 NumPy 的基础安装、数组操作、数学函数、统计函数、线性代数、广播机制、高效数据处理与图像处理等内容。

01. NumPy入门与数组创建
02. NumPy数组属性详解:形状、维度与数据类型
03. NumPy 文件数据读写:高效的数据存储与加载
04. NumPy 数组索引与切片:高效访问与操作数组
05. NumPy 数组的合并、分割与重塑
06. NumPy 数学函数:高效数值计算
07. NumPy 统计函数详解
08. NumPy 随机数生成与概率分布
09. NumPy 线性代数:矩阵运算与科学计算基础
10. NumPy 广播机制(Broadcasting):高效数组运算
11. NumPy 高效数据处理与优化
12. NumPy 数据分析与图像处理入门


1. NumPy 入门与数组创建

1.1 NumPy 安装与导入

bash 复制代码
pip install numpy
python 复制代码
import numpy as np

1.2 一维数组创建

python 复制代码
import numpy as np

a = np.array([1, 2, 3, 4, 5])   # 从列表创建
b = np.arange(0, 10, 2)         # 等差序列 [0, 2, 4, 6, 8]
c = np.linspace(0, 1, 5)        # 等间距序列 [0. , 0.25, 0.5 , 0.75, 1.]

1.3 多维数组创建

python 复制代码
matrix = np.array([[1, 2, 3],
                   [4, 5, 6]])   # 二维数组
cube = np.ones((3, 3, 3))        # 三维数组,全1

1.4 特殊数组

python 复制代码
zeros = np.zeros((2, 3))          # 全零数组
ones = np.ones((3, 2))			  # 全一数组
identity = np.eye(3)              # 单位矩阵
full = np.full((2, 2), 7)         # 全7数组
rand = np.random.rand(2, 2)		  # 随机数组

2. NumPy 数组属性详解

  • 形状arr.shape
  • 维度arr.ndim
  • 大小arr.size
  • 数据类型arr.dtype
python 复制代码
a = np.arange(12).reshape(3, 4)
print(a.shape)   # (3, 4) 形状
print(a.ndim)    # 2 维度
print(a.size)    # 12 元素个数
print(a.dtype)   # int64 数据类型

3. NumPy 文件数据读写

3.1 保存数组

python 复制代码
np.save('array.npy', arr)
np.savez('arrays.npz', arr1=arr, arr2=arr2d)

3.2 读取数组

python 复制代码
arr_loaded = np.load('array.npy')
arrays_loaded = np.load('arrays.npz')
print(arr_loaded)
print(arrays_loaded['arr1'])

3.3 文本文件读写

python 复制代码
np.savetxt('data.txt', arr, delimiter=',')
arr_txt = np.loadtxt('data.txt', delimiter=',')

4. NumPy 数组索引与切片

4.1 基础索引

python 复制代码
a = np.array([[10, 20, 30],
              [40, 50, 60]])
print(a[1, 2])  # 60

4.2 基础切片

python 复制代码
print(a[:1, 1:])  # [[20 30]]

4.3 布尔操作

python 复制代码
print(a[a > 30])  # [40, 50, 60]

4.4 花式操作

python 复制代码
print(a[[0, 1], [1, 2]])  # [20, 60]

5. NumPy 数组的合并、分割与重塑

python 复制代码
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])

# 合并
print(np.vstack((a, b)))
# [[1 2]
#  [3 4]
#  [5 6]]
print(np.hstack((a, b.T)))
# [[1 2 5]
#  [3 4 6]]

# 分割
print(np.split(np.arange(9), 3))
# [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]

# 重塑
print(a.reshape(4, 1))
# [[1]
#  [2]
#  [3]
#  [4]]

6. NumPy 数学函数

支持广播和向量化操作

python 复制代码
x = np.array([1, 2, 3, 4])

print(np.sqrt(x))   # 开方
print(np.exp(x))    # 指数
print(np.log(x))    # 对数
print(np.sin(x))    # 三角函数

7. NumPy 统计函数

数据分析基础必备工具

python 复制代码
a = np.array([1, 2, 3, 4, 5])

print(np.mean(a))   # 均值
print(np.median(a)) # 中位数
print(np.var(a))    # 方差
print(np.std(a))    # 标准差

8. NumPy 随机数生成

python 复制代码
rng = np.random.default_rng()

print(rng.random(3))           # [0.1, 0.5, 0.9]
print(rng.integers(0, 10, 5))  # 0-9 随机整数
print(rng.normal(0, 1, 5))     # 标准正态分布

9. NumPy 线性代数

  • 矩阵乘法np.dot(A,B)A@B
  • 转置A.T
  • 逆矩阵np.linalg.inv(A)
  • 行列式np.linalg.det(A)
  • np.linalg.matrix_rank(A)
  • 特征值与特征向量np.linalg.eig(A)
  • 解线性方程组np.linalg.solve(A,b)
python 复制代码
A = np.array([[1, 2],
              [3, 4]])

print(np.linalg.det(A))      # 行列式
print(np.linalg.inv(A))      # 逆矩阵
eigvals, eigvecs = np.linalg.eig(A)
print(eigvals)               # 特征值

10. NumPy 广播机制

  • 标量与数组运算自动广播
  • 不同形状数组自动扩展
  • 高维数组广播
  • 广播可用于向量化计算、数据归一化等
python 复制代码
a = np.array([[1], [2], [3]])  # (3,1)
b = np.array([10, 20, 30])     # (3,)
print(a + b)
# [[11 21 31]
#  [12 22 32]
#  [13 23 33]]

11. NumPy 高效数据处理与优化

  • 向量化:避免循环
  • ufuncsnp.sin(), np.exp()
  • 布尔索引:快速筛选修改
  • 内存与数据类型优化float32, int8
python 复制代码
import time
import numpy as np

N = 10_000_000
a = list(range(N))
b = list(range(N))

# Python 列表
start = time.time()
c = [a[i] + b[i] for i in range(N)]
time_python = time.time() - start
print("Python:", time_python)

# NumPy 向量化
a_np = np.arange(N)
b_np = np.arange(N)
start = time.time()
c_np = a_np + b_np
time_numpy = time.time() - start
print("NumPy:", time_numpy)

# 时间差之比
print("时间比 (Python / NumPy):", time_python / time_numpy)

Python: 1.1597342491149902

NumPy: 0.0395660400390625

时间比 (Python / NumPy): 29.311355090628616

NumPy 数组运算速度往往比 Python 列表快几十倍甚至上百倍。


12. NumPy 数据分析与图像处理入门

12.1 数据分析

python 复制代码
scores = np.array([[90,85,70],[75,80,85],[60,70,65],[95,90,100]])
print(np.mean(scores, axis=1))  # 学生平均
print(np.mean(scores, axis=0))  # 课程平均

12.2 图像处理

翻转、裁剪、亮度调整均可通过数组操作完成

python 复制代码
from skimage import data
import matplotlib.pyplot as plt

img = data.astronaut()  # 彩色图像
gray = img.mean(axis=2)  # 灰度化
plt.imshow(gray, cmap='gray')
plt.show()

13. 总结

本文系统介绍了 NumPy 的核心功能与应用,涵盖数组创建、属性、索引切片、文件操作、数学与统计函数、随机数、线性代数、广播机制及高效数据处理。作为 Python 科学计算的基石,NumPy 在数据分析、机器学习与科研工程中不可或缺。

相关推荐
明志数科4 小时前
具身智能数据工程观察:“数据筑基“时代的数据底座建设路径
人工智能·机器人
m0_614523555 小时前
普通视频怎么做多场景一镜到底:路线设计、逐段衔接与整体验收
人工智能·音视频
海宇服务6 小时前
零信任架构实战:基于海宇对外投资历史查询服务构建自动化供应商准入网关
运维·人工智能·架构·自动化
东风破_6 小时前
别急着上 Agentic RAG:先用 LangGraph 把最小 RAG 跑明白
人工智能
LaughingZhu6 小时前
Product Hunt 每日热榜 | 2026-09-12
人工智能·深度学习·神经网络·搜索引擎·百度
天真小巫6 小时前
2026.9.13总结(工作量日益繁重的当下,AI如何提效)
人工智能
Zguigo6 小时前
【CUDA1】GPUvsCPU,CUDA Kernel
人工智能·pytorch·深度学习
thesky1234566 小时前
用 ONNX Runtime 把 PyTorch 模型变成跨平台极速推理引擎:导出、优化、量化完整实
人工智能·深度学习·模型部署
米小虾6 小时前
把 KV Cache 从 3514 字节压到 890 字节:DeepSeek V4.1-Flash 动了什么,又没动什么
人工智能
锋行天下6 小时前
LangGraph 进阶:Command + Send 动态控制流、并行 Map-Reduce 实战与踩坑
人工智能