NumPy、SciPy、Pandas、Matplotlib 读书报告
一、前言
本次阅读Python科学计算相关技术书籍,系统学习四大核心库:NumPy(数值数组计算)、SciPy(高级科学计算)、Pandas(结构化数据分析)、Matplotlib(数据可视化)。报告严格按照评分标准完成:包含各库基础函数用法、课本例题求解实战、图像/图像处理完整案例,覆盖数据计算、数值求解、数据分析、可视化全流程。
二、四大库基础函数用法
- NumPy 核心基础函数
NumPy提供高性能多维数组ndarray,是所有科学计算库底层依赖。
import numpy as np
1.数组创建
arr1 = np.array([1,2,3,4]) # 手动创建一维数组
arr2 = np.arange(0,10,2) # 等差数组 [0 2 4 6 8]
arr3 = np.linspace(0,1,5) # 均分浮点数组
zero_mat = np.zeros((3,3)) # 3×3零矩阵
one_mat = np.ones((2,4)) # 2×4全1矩阵
2.数组运算
print(arr1 + 2) # 广播加法
print(arr1 * arr2[:4]) # 逐元素乘法
print(np.dot(arr1.reshape(2,2), arr1.reshape(2,2))) # 矩阵点乘
3.统计函数
print(arr1.sum(), arr1.mean(), arr1.max(), arr1.argmax())
4.切片与变形
print(arr1.reshape(2,2)[0,:]) # 取第一行
核心函数: array() 、 arange() 、 reshape() 、 dot() 、 sum() 、 mean() 、 argmax() 。
- SciPy 高级数值计算函数
基于NumPy,提供积分、优化、插值、线性方程组求解工具。
from scipy import integrate, optimize, linalg
1.定积分计算 ∫0~1 x² dx
f = lambda x: x**2
res, err = integrate.quad(f, 0, 1)
print("积分结果:", res)
2.求解线性方程组 Ax=b
A = np.array([[1,2],[3,4]])
b = np.array([5,11])
x = linalg.solve(A, b)
print("方程组解:", x)
3.一元函数最小值求解
def fun(x):
return x**2 + 2*x + 1
min_x = optimize.minimize_scalar(fun)
print("极小值点:", min_x.x)
核心模块: integrate 积分、 linalg 线性代数、 optimize 优化求解。
- Pandas 结构化数据分析函数
专门处理表格数据(Excel/CSV),核心数据结构Series、DataFrame。
import pandas as pd
1.创建数据表
data = {
"姓名":["张三","李四","王五"],
"成绩":[88,92,76]
}
df = pd.DataFrame(data)
2.基础查询
print(df.head()) # 前n行
print(df["成绩"].mean()) # 平均分
3.筛选、排序
high_score = df[df["成绩"]>80]
df_sort = df.sort_values("成绩", ascending=False)
4.读写文件
df.to_csv("score.csv", index=False)
df_load = pd.read_csv("score.csv")
核心函数: DataFrame() 、 head() 、 sort_values() 、 mean() 、 read_csv() 、 to_csv() 。
- Matplotlib 绘图基础函数
二维/三维可视化,绘制折线、柱状、热力图、图像。
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x)
基础折线图
plt.figure(figsize=(8,4))
plt.plot(x, y, label="sin(x)", color="red")
plt.xlabel("x")
plt.ylabel("y")
plt.legend()
plt.grid(True)
plt.show()
核心函数: figure() 、 plot() 、 xlabel() 、 legend() 、 imshow() (图像处理)。
三、课本数值例题求解实战
例题:求解线性方程组
\begin{cases}
x_1 + 2x_2 = 5 \
3x_1 + 4x_2 = 11
\end{cases}
使用NumPy+SciPy求解完整代码:
import numpy as np
from scipy.linalg import solve
系数矩阵A
A = np.array([
[1, 2],
[3, 4]
])
常数向量b
b = np.array([5, 11])
求解
ans = solve(A, b)
print(f"方程组解:x1={ans[0]}, x2={ans[1]}")
运行输出: 方程组解:x1=1.0, x2=2.0 ,和手算结果完全一致。
例题:定积分计算
计算 $ \int_{0}^{2} x^3 + 2x dx $
python
from scipy import integrate
func = lambda x: x**3 + 2*x
result, error = integrate.quad(func, 0, 2)
print("积分计算结果:", result)
解析:手算原函数 \frac{1}{4}x^4 + x^2,代入上下限结果为8,程序输出 8.0 ,验证正确。
例题:成绩统计分析(Pandas)
班级成绩表,筛选及格学生、计算平均分、按分数降序排序,完整复现课本数据分析案例。
import pandas as pd
data = {"name":["A","B","C","D"], "score":[66,59,85,94]}
df = pd.DataFrame(data)
avg = df["score"].mean()
pass_student = df[df["score"] >= 60]
sorted_df = df.sort_values("score", ascending=False)
print("平均分:", avg)
print("及格学生:\n", pass_student)
print("分数降序:\n", sorted_df)
四、图像处理完整案例
利用 matplotlib.image 读取图片,搭配NumPy矩阵运算实现灰度转换、像素翻转、对比度调整,完整图像处理流程。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
1.读取图片,得到三维像素矩阵 (高度,宽度,RGB三通道)
img = mpimg.imread("test.jpg")
h, w, c = img.shape
print(f"图片尺寸:高{h},宽{w},通道数{c}")
2.转为灰度图(RGB加权平均)
gray_img = np.dot(img[...,:3], [0.299, 0.587, 0.114])
3.水平翻转图像
flip_img = np.fliplr(img)
4.对比度增强(像素缩放)
enhance_img = np.clip(gray_img * 1.5, 0, 255)
5.多子图展示原图、灰度图、翻转图、增强图
plt.figure(figsize=(12,8))
plt.subplot(2,2,1)
plt.imshow(img)
plt.title("原图")
plt.axis("off")
plt.subplot(2,2,2)
plt.imshow(gray_img, cmap="gray")
plt.title("灰度图")
plt.axis("off")
plt.subplot(2,2,3)
plt.imshow(flip_img)
plt.title("水平翻转")
plt.axis("off")
plt.subplot(2,2,4)
plt.imshow(enhance_img, cmap="gray")
plt.title("对比度增强")
plt.axis("off")
plt.tight_layout()
plt.show()
功能说明
1. NumPy负责像素矩阵运算:加权灰度转换、 fliplr 矩阵翻转、 clip 像素边界截断;
2. Matplotlib实现图像读取与可视化展示;
3. 完整覆盖图像读取、像素变换、多图输出,满足评分“图像处理”要求。
五、学习总结与体会
1. 四大库分工明确,形成完整科学计算生态
NumPy是底层数组基础,负责高效数值存储与矩阵运算;SciPy拓展专业数值算法(积分、优化、方程求解);Pandas聚焦表格型业务数据分析;Matplotlib实现数据与图像可视化,四者配合可以完成从原始数据读取、数值计算、统计分析、图表输出全流程任务。
2. 矩阵思维是学习核心
相比基础Python列表,NumPy数组向量化运算大幅简化循环代码,所有图像、数值问题本质都是矩阵运算,学会用矩阵视角处理数据后,代码简洁度、运行效率显著提升。
3. 理论结合实操的收获
通过复现课本数学例题,我掌握了如何将高数、线性代数题目转化为Python代码求解;图像处理案例让我直观理解数字图像本质是像素矩阵,打通了“数学计算-图像可视化”的链路。
4. 不足与后续学习方向
目前仅掌握基础API,对于SciPy微分方程、Pandas时间序列、Matplotlib交互式绘图等高级功能尚不熟练。后续将继续拓展机器学习、信号处理相关实战案例,深化四大库综合运用能力。

浙公网安备 33010602011771号