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  信号处理 ),提升数据处理与分析能力。

posted @ 2025-06-23 12:04  bolun123  阅读(13)  评论(0)    收藏  举报