以下是 MATLAB 与 NumPy 的常用函数对照表,帮助熟悉 MATLAB 的用户快速上手 NumPy:
1. 矩阵/数组创建
MATLAB | NumPy | 说明 |
---|---|---|
zeros(m, n) | np.zeros((m, n)) | 全0矩阵 |
ones(m, n) | np.ones((m, n)) | 全1矩阵 |
eye(m) | np.eye(m) | 单位矩阵 |
rand(m, n) | np.random.rand(m, n) | 0~1均匀分布随机矩阵 |
randn(m, n) | np.random.randn(m, n) | 标准正态分布随机矩阵 |
linspace(a, b, n) | np.linspace(a, b, n) | 线性等分向量 |
magic(m) | 无直接等价,需自定义 | 魔方矩阵 |
2. 数学运算
MATLAB | NumPy | 说明 |
---|---|---|
a * b | a @ b 或 np.matmul(a, b) | 矩阵乘法 |
a .* b | a * b | 元素乘法 |
a' | a.T 或 a.transpose() | 转置 |
inv(a) | np.linalg.inv(a) | 矩阵求逆 |
a \ b | np.linalg.solve(a, b) | 解线性方程组 ax = b |
sum(a) | np.sum(a, axis=0) | 按列求和(默认行为不同) |
mean(a) | np.mean(a, axis=0) | 按列求均值 |
max(a) | np.max(a, axis=0) | 按列找最大值 |
reshape(a, m, n) | a.reshape(m, n) | 重塑矩阵形状 |
3. 线性代数
MATLAB | NumPy | 说明 |
---|---|---|
eig(a) | np.linalg.eig(a) | 特征值和特征向量 |
svd(a) | np.linalg.svd(a) | 奇异值分解 |
det(a) | np.linalg.det(a) | 矩阵行列式 |
norm(a) | np.linalg.norm(a) | 矩阵/向量范数 |
diag(a) | np.diag(a) | 提取对角线元素或构造对角矩阵 |
4. 索引与切片
MATLAB | NumPy | 说明 |
---|---|---|
a(2,3) | a[1, 2] | 访问第2行第3列元素(索引从0开始) |
a(2:5, :) | a[1:5, :] | 提取第2到5行 |
a(:, [1,3]) | a[:, [0, 2]] | 提取第1和3列 |
a > 5 | a > 5 | 布尔索引(用法类似) |
find(a > 5) | np.where(a > 5) | 返回满足条件的索引 |
5. 文件操作
MATLAB | NumPy | 说明 |
---|---|---|
save('data.mat', a) | np.save('data.npy', a) | 保存为二进制文件 |
load('data.mat') | np.load('data.npy') | 加载二进制文件 |
csvread('data.csv') | np.loadtxt('data.csv', delimiter=',') | 读取CSV文件 |
6. 其他常用函数
MATLAB | NumPy | 说明 |
---|---|---|
size(a) | a.shape | 返回维度(元组形式) |
length(a) | len(a) 或 a.shape[0] | 最长维度的长度 |
repmat(a, m, n) | np.tile(a, (m, n)) | 重复矩阵 |
meshgrid(x, y) | np.meshgrid(x, y) | 生成网格坐标 |
plot(x, y) | plt.plot(x, y) (需 import matplotlib.pyplot as plt ) | 绘制曲线 |
关键区别
-
索引:
- MATLAB:从 1 开始,且索引用圆括号
()
。 - NumPy:从 0 开始,索引用方括号
[]
。
- MATLAB:从 1 开始,且索引用圆括号
-
行列顺序:
- MATLAB:按列优先(Fortran风格)。
- NumPy:默认按行优先(C风格)。
-
运算符:
- MATLAB:
*
是矩阵乘法,.*
是元素乘法。 - NumPy:
@
或np.matmul
是矩阵乘法,*
是元素乘法。
- MATLAB:
-
函数参数:
- MATLAB:维度参数直接传递,如
sum(a, 1)
。 - NumPy:维度用
axis
指定,如np.sum(a, axis=0)
。
- MATLAB:维度参数直接传递,如
示例代码
矩阵乘法
% MATLAB
C = A * B;
# NumPy
C = A @ B
按列求和
% MATLAB
s = sum(A, 1);
# NumPy
s = np.sum(A, axis=0)
通过对照表可以快速迁移 MATLAB 代码到 NumPy,但需注意语法和底层实现的差异!
参考:
(2)MATLAB-Numpy函数对照表_matlab numpy 对照 表-优快云博客
(3) 从 Matlab 到 NumpyNumpy 和 Matlab 比较