💡解答
关于numpy、scipy、pandas、matplotlib的读书报告
- 基本函数用法
• numpy:介绍numpy数组的创建,如numpy.array()将列表转换为数组;数组的基本属性,像shape获取数组形状,dtype查看数据类型。阐述数组的运算,如算术运算(加、减、乘、除等)、索引和切片操作。示例代码:
import numpy as np
arr = np.array([1, 2, 3])
print("数组:", arr)
print("形状:", arr.shape)
print("数据类型:", arr.dtype)
arr2 = np.array([4, 5, 6])
print("数组相加:", arr + arr2)
• scipy:以scipy.stats模块为例,介绍常见统计函数,如norm.pdf()计算正态分布概率密度函数值;scipy.optimize模块中minimize()用于求解函数最小值。示例:
from scipy.stats import norm
import matplotlib.pyplot as plt
x = np.linspace(-3, 3, 100)
pdf = norm.pdf(x)
plt.plot(x, pdf)
plt.show()
• pandas:讲解DataFrame和Series数据结构的创建,如通过字典创建DataFrame。介绍数据的读取,如read_csv()读取CSV文件;数据的基本操作,像数据筛选、排序、分组聚合等。示例:
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]}
df = pd.DataFrame(data)
print(df)
print(df[df['age'] > 30])
• matplotlib:说明pyplot模块绘图的基本流程,如创建画布plt.figure(),绘制线条图plt.plot(),设置坐标轴标签plt.xlabel()、plt.ylabel(),添加标题plt.title()等。示例:
import matplotlib.pyplot as plt
x = [1, 2, 3]
y = [4, 5, 6]
plt.plot(x, y)
plt.xlabel('X - axis')
plt.ylabel('Y - axis')
plt.title('Simple Line Plot')
plt.show()
2. 解决具体问题
• 选取书本题目示例:假设书本有一道关于计算一组数据的均值、标准差,并绘制其分布直方图的题目。利用numpy计算均值和标准差,用matplotlib绘制直方图。代码如下:
import numpy as np
import matplotlib.pyplot as plt
生成一组随机数据
data = np.random.randn(1000)
mean = np.mean(data)
std = np.std(data)
print("均值:", mean)
print("标准差:", std)
plt.hist(data, bins = 30)
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram of Random Data')
plt.show()
• 阐述解题思路:先利用numpy的mean()和std()函数计算数据统计量,再通过matplotlib的hist()函数绘制直方图,展示数据分布情况。
- 图像处理
• 使用matplotlib进行简单图像处理:读取图像,如plt.imread();显示图像plt.imshow()。对图像进行灰度转换,可利用numpy对图像数组进行操作。示例:
import matplotlib.pyplot as plt
import numpy as np
读取图像
img = plt.imread('your_image.jpg')
plt.imshow(img)
plt.title('Original Image')
plt.show()
灰度转换
gray_img = np.dot(img[...,:3], [0.2989, 0.5870, 0.1140])
plt.imshow(gray_img, cmap='gray')
plt.title('Grayscale Image')
plt.show()
• 使用scipy进行图像滤波等处理:以scipy.ndimage.gaussian_filter()为例进行高斯滤波,平滑图像。代码:
from scipy.ndimage import gaussian_filter
filtered_img = gaussian_filter(img, sigma = 1)
plt.imshow(filtered_img)
plt.title('Filtered Image')
plt.show()
• 解释处理原理和效果:灰度转换基于人眼对不同颜色通道的敏感度不同,通过加权求和实现。高斯滤波利用高斯函数对图像进行卷积,减少噪声和平滑图像边缘。
浙公网安备 33010602011771号