numpy等读书报告
《numpy、scipy、pandas、matplotlib 读书报告》
一、基础函数用法(10 分)
(一)numpy
numpy 是 Python 科学计算的基础库,核心为 ndarray 数组。
- 数组创建: np.array([1,2,3]) 生成一维数组, np.zeros((3,3)) 创建 3×3 零矩阵, np.arange(1,10,2) 按步长 2 生成 1 到 9 的数组。
- 运算操作:支持广播机制,如 arr + 5 (数组每个元素加 5 );矩阵乘法用 np.dot(arr1, arr2) 或 @ 运算符。
(二)scipy
专注科学计算,基于 numpy 拓展。
- 优化模块: scipy.optimize.minimize 可求解函数最小值,如对 f(x)=x²+2x+1 找最小值点。
- 积分模块: scipy.integrate.quad 计算定积分,例 quad(lambda x: x**2, 0, 1) 求 ∫_0^1 x²dx 。
(三)pandas
用于数据处理与分析,核心是 DataFrame 和 Series 。
- 数据读取: pd.read_csv('data.csv') 读取 CSV 文件, pd.read_excel('data.xlsx') 读取 Excel 文件。
- 数据操作: df.head() 查看前 5 行, df.groupby('col').mean() 按列分组求均值, df.dropna() 删除含缺失值的行。
(四)matplotlib
绘图基础库,常用 pyplot 模块。
- 折线图: plt.plot(x, y) 绘制折线, plt.xlabel('x轴') 、 plt.ylabel('y轴') 设置坐标轴标签。
- 柱状图: plt.bar(x, height) 绘制柱状图, plt.title('标题') 添加图表标题。
二、解决具体问题(10 分)
问题:分析学生成绩数据(模拟场景,数据自定义)
假设有学生成绩 CSV 文件 scores.csv ,含“姓名”“语文”“数学”“英语”列,需统计:
1. 各科目平均分;
2. 总分排名前 3 的学生。
代码实现:
点击查看代码
import pandas as pd
# 读取数据
df = pd.read_csv('scores.csv')
# 计算各科目平均分
subject_means = df[['语文', '数学', '英语']].mean()
print("各科目平均分:\n", subject_means)
# 计算总分并添加新列
df['总分'] = df[['语文', '数学', '英语']].sum(axis=1)
# 按总分降序排序,取前3
top_3 = df.sort_values(by='总分', ascending=False).head(3)
print("总分前3学生:\n", top_3[['姓名', '总分']])
问题:用 scipy 求解方程
求解方程 x² - 4x + 3 = 0 的根(演示 scipy.optimize.root 用法 )。
代码实现:
点击查看代码
from scipy.optimize import root
import numpy as np
def func(x):
return x**2 - 4*x + 3
# 求解方程
result = root(func, 0) # 初始猜测值设为0
print("方程根:", result.x)
三、图像处理实践(10 分)
任务:加载、处理并展示图像
使用 matplotlib 加载一张图片,转灰度图后,用 numpy 对像素进行简单操作(如亮度调整 ),再展示原图与处理后的图。
代码实现:
点击查看代码
import matplotlib.pyplot as plt
import numpy as np
# 加载图像(需替换为实际路径,支持 png、jpg 等格式)
img = plt.imread('test.jpg')
# 转灰度图(公式:Y = 0.299R + 0.587G + 0.114B )
gray_img = np.dot(img[..., :3], [0.299, 0.587, 0.114])
# 亮度调整(全体像素值 +20 ,限制在 0-255 )
bright_img = np.clip(gray_img + 20, 0, 255)
# 绘图展示
plt.figure(figsize=(10, 6))
plt.subplot(1, 3, 1)
plt.imshow(img)
plt.title('原图')
plt.subplot(1, 3, 2)
plt.imshow(gray_img, cmap='gray')
plt.title('灰度图')
plt.subplot(1, 3, 3)
plt.imshow(bright_img, cmap='gray')
plt.title('亮度调整后')
plt.show()
四、总结
通过对 numpy (数组计算 )、 scipy (科学算法 )、 pandas (数据处理 )、 matplotlib (可视化 )的学习,掌握了基础用法,能结合实际问题(成绩分析、方程求解 )编写代码,还实践了图像处理流程。这些库协同使用,可高效完成科学计算与数据分析任务,后续计划深入学习高级功能(如 pandas 时间序列、 scipy 信号处理 ),提升数据处理与分析能力。

浙公网安备 33010602011771号