NumPy、SciPy、Pandas、Matplotlib 基础函数用法(Python)
一、NumPy 数值计算库
NumPy 是Python科学计算的基础库,核心为ndarray多维数组,运算效率远高于普通列表,支持向量化运算。
1. 数组创建函数
- `np.array(序列)`:将列表、元组等转为多维数组;
- `np.zeros(形状)`:创建指定形状的全0数组;
- `np.ones(形状)`:创建指定形状的全1数组;
- `np.arange(起始, 终止, 步长)`:生成等差一维数组;
- `np.linspace(起始, 终止, 个数)`:在区间内均匀生成指定数量数值;
- `np.random.rand(维度)`:生成0~1之间的随机浮点数组。
2. 数组属性与形状操作
- `数组.ndim`:获取数组维度;
- `数组.shape`:获取数组行列形状;
- `数组.size`:统计数组总元素个数;
- `数组.reshape(新形状)`:重塑数组维度;
- `数组.T`:实现数组转置。
3. 索引与切片
支持单元素取值、区间切片、多维数组行列选取,语法与Python列表类似,可灵活提取数组指定数据。
4. 数学运算函数
- `np.sum()`:数组求和;`np.mean()`:计算平均值;
- `np.max()`/`np.min()`:获取最大值、最小值;
- `np.sqrt()`:开平方;`np.abs()`:取绝对值;
数组可直接进行加减乘除运算,自带广播机制,简化批量计算。
代码示例
import numpy as np
1. 创建数组
arr1 = np.array([1, 2, 3, 4])
arr2 = np.zeros((2, 3))
arr3 = np.ones((3, 2))
arr4 = np.arange(0, 10, 2)
arr5 = np.random.rand(2, 2)
2. 数组属性与形状操作
print("数组维度:", arr2.ndim)
print("数组形状:", arr2.shape)
arr6 = arr2.reshape(3, 2)
arr7 = arr2.T
3. 索引与切片
a = np.array([[1,2,3],[4,5,6]])
print("取值:", a[0, 1])
print("切片:", a[:, 0:2])
4. 数学运算
print("求和:", np.sum(arr1))
print("均值:", np.mean(arr1))
print("最大值:", np.max(arr1))
print("最小值:", np.min(arr1))
print("开平方:", np.sqrt(arr1))
print("绝对值:", np.abs([-1, -2, 3]))
二、SciPy 科学计算库
SciPy 基于NumPy开发,专注高等数学、工程运算,拓展了积分、线性代数、方程求解、插值等专业功能。
1. 积分计算
`integrate.quad(函数, 积分下限, 积分上限)`:求解一元函数定积分。
2. 线性代数运算
- `linalg.det(矩阵)`:计算矩阵行列式;
- `linalg.inv(矩阵)`:矩阵求逆;
- `linalg.solve(系数矩阵, 常数项)`:求解线性方程组。
3. 方程与极值求解
- `optimize.fsolve(函数, 初始值)`:求解一元方程根;
- `optimize.minimize(函数, 初始值)`:求解函数极值。
4. 数据插值
`interp1d(原x数据, 原y数据)`:构建插值函数,补全离散数据。
代码示例
import numpy as np
from scipy import integrate, linalg, optimize
from scipy.interpolate import interp1d
1. 定积分计算
def f(x):
return x ** 2 + 2 * x
res, err = integrate.quad(f, 0, 2)
print("定积分结果:", res)
2. 线性代数运算
A = np.array([[1, 2], [3, -1]])
b = np.array([5, 1])
print("行列式:", linalg.det(A))
print("矩阵逆:\n", linalg.inv(A))
print("方程组解:", linalg.solve(A, b))
3. 方程求根
def g(x):
return x**2 - 9
root = optimize.fsolve(g, 2)
print("方程根:", root)
4. 数据插值
x = np.array([0, 1, 2, 3])
y = np.array([1, 3, 5, 7])
f_inter = interp1d(x, y)
print("插值结果:", f_inter(1.5))
三、Pandas 数据分析库
Pandas 是表格数据处理专用库,核心为Series一维序列和DataFrame二维数据表,适配Excel、CSV等格式数据。
1. 数据结构创建与文件读写
- `pd.Series(数据)`:创建一维序列;
- `pd.DataFrame(字典/数组)`:创建二维数据表;
- `pd.read_csv(文件路径)`/`pd.read_excel(文件路径)`:读取外部表格文件;
- `DataFrame.to_csv(保存路径)`:将表格数据保存为文件。
2. 数据查看函数
- `head(n)`/`tail(n)`:查看表格前/后n行数据;
- `describe()`:输出数据统计摘要(均值、最值、方差等)。
3. 数据清洗函数
- `dropna()`:删除含空值的行/列;
- `fillna(填充值)`:对空值进行填充;
- `drop_duplicates()`:删除重复数据。
4. 数据筛选与统计
- `sort_values(列名)`:按指定列排序;
- `groupby(分组列)`:按照指定字段分组,配合聚合函数完成分组统计。
代码示例
import pandas as pd
1. 创建数据结构
s = pd.Series([10, 20, 30, 40])
df = pd.DataFrame({
"姓名": ["张三", "李四", "王五"],
"成绩": [88, 76, 92]
})
2. 查看数据
print("前2行数据:\n", df.head(2))
print("统计信息:\n", df.describe())
3. 数据清洗
df2 = pd.DataFrame({"分数": [80, None, 90, None]})
df2 = df2.dropna()
df2 = df2.fillna(85)
df2 = df2.drop_duplicates()
4. 排序与分组
df_sort = df.sort_values("成绩", ascending=False)
group_data = df.groupby("姓名")["成绩"].mean()
print("排序后数据:\n", df_sort)
print("分组统计:\n", group_data)
四、Matplotlib 数据可视化库
Matplotlib 是主流绘图库,可绘制各类图表、实现图像展示与基础图像处理。
1. 画布与基础绘图
- `plt.figure(figsize=(宽,高))`:创建并设置画布大小;
- `plt.plot()`:绘制折线图;`plt.bar()`:绘制柱状图;
- `plt.scatter()`:绘制散点图;`plt.hist()`:绘制直方图。
2. 图表美化函数
- `plt.title(标题)`:设置图表标题;
- `plt.xlabel(名称)`/`plt.ylabel(名称)`:设置横、纵坐标轴名称;
- `plt.legend()`:显示图例。
3. 图像相关函数
- `imread(图片路径)`:读取图片并转为NumPy像素数组;
- `plt.imshow(数组)`:展示图像;
- `plt.show()`:显示所有绘制图表与图像。
代码示例
import matplotlib.pyplot as plt
from matplotlib.image import imread
解决中文乱码
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
1. 基础绘图
x = [1, 2, 3, 4]
y = [2, 4, 1, 3]
plt.figure(figsize=(8, 4))
plt.plot(x, y, label="折线图")
plt.bar(x, y, alpha=0.5)
plt.title("基础绘图")
plt.xlabel("X轴")
plt.ylabel("Y轴")
plt.legend()
plt.show()
2. 图像读取与展示
img = imread("test.jpg")
plt.imshow(img)
plt.show()
