Python 与 Matlab 矩阵操作对应表
文章目录
- Matlab、python函数对应表
- MATLAB
Matlab | Python |
---|---|
numel(X) | X.size |
size(X, 2) | X.shape[1] |
A.*B | A*B |
A*B | A.dot(B) |
X’ | X.conj().T |
X(1:5, :)
|
X[0:5, :] |
X(1:2, 4:7) | X[0:2,3:7] |
repmat(X, 2, 3) | np.tile(X, (2, 3)) |
[a b] or [a, b] | np.hstack((a,b)) |
[a; b] | np.vstack((a,b)) |
ones(3,4) | np.ones((3, 4)) |
Matlab、python函数对应表
Matlab2python:http://ompclib.appspot.com/m2py
numpy.array | numpy.matrix | Notes | |
---|---|---|---|
ndims(a)
|
ndim(a) or a.ndim
|
获取a(张量/秩)的维数 | |
numel(a)
|
size(a) or a.size
|
获取数组元素的数目 | |
size(a)
|
shape(a) or a.shape
|
get the “size” of the matrix | |
size(a,n)
|
a.shape[n-1]
|
get the number of elements of the nth dimension of array a. (Note that MATLAB® uses 1 based indexing while Python uses 0 based indexing, See note ‘INDEXING’) | |
[ 1 2 3; 4 5 6 ]
|
array([[1.,2.,3.], [4.,5.,6.]])
|
mat([[1.,2.,3.], [4.,5.,6.]]) or mat("1 2 3; 4 5 6")
|
2x3 matrix literal |
[ a b; c d ]
|
vstack([hstack([a,b]), hstack([c,d])])
|
bmat('a b; c d')
|
construct a matrix from blocks a,b,c, and d |
a(end)
|
a[-1]
|
a[:,-1][0,0]
|
access last element in the 1xn matrix a
|
a(2,5)
|
a[1,4]
|
access element in second row, fifth column | |
a(2,:)
|
a[1] or a[1,:]
|
entire second row of a
|
|
a(1:5,:)
|
a[0:5] or a[:5] or a[0:5,:]
|
the first five rows of a
|
|
a(end-4:end,:)
|
a[-5:]
|
the last five rows of a
|
|
a(1:3,5:9)
|
a[0:3][:,4:9]
|
rows one to three and columns five to nine of a . This gives read-only access.
|
|
a([2,4,5],[1,3])
|
a[ix_([1,3,4],[0,2])]
|
rows 2,4 and 5 and columns 1 and 3. This allows the matrix to be modified, and doesn’t require a regular slice. | |
a(3:2:21,:)
|
a[ 2:21:2,:]
|
every other row of a , starting with the third and going to the twenty-first
|
|
a(1:2:end,:)
|
a[ ::2,:]
|
every other row of a , starting with the first
|
|
a(end:-1:1,:) or flipud(a)
|
a[ ::-1,:]
|
a with rows in reverse order
|
|
a([1:end 1],:)
|
a[r_[:len(a),0]]
|
a with copy of the first row appended to the end
|
|
a.'
|
a.transpose() or a.T
|
transpose of a
|
|
a'
|
a.conj().transpose() or a.conj().T
|
a.H
|
conjugate transpose of a
|
a * b
|
dot(a,b)
|
a * b
|
matrix multiply |
a .* b
|
a * b
|
multiply(a,b)
|
element-wise multiply |
a./b
|
a/b
|
element-wise divide | |
a.^3
|
a**3
|
power(a,3)
|
element-wise exponentiation |
(a>0.5)
|
(a>0.5)
|
matrix whose i,jth element is (a_ij > 0.5) | |
find(a>0.5)
|
nonzero(a>0.5)
|
find the indices where (a > 0.5) | |
a(:,find(v>0.5))
|
a[:,nonzero(v>0.5)[0]]
|
a[:,nonzero(v.A>0.5)[0]]
|
extract the columms of a where vector v > 0.5 |
a(:,find(v>0.5))
|
a[:,v.T>0.5]
|
a[:,v.T>0.5)]
|
extract the columms of a where column vector v > 0.5 |
a(a<0.5)=0
|
a[a<0.5]=0
|
a with elements less than 0.5 zeroed out | |
a .* (a>0.5)
|
a * (a>0.5)
|
mat(a.A * (a>0.5).A)
|
a with elements less than 0.5 zeroed out |
a(:) = 3
|
a[:] = 3
|
set all values to the same scalar value | |
y=x
|
y = x.copy()
|
numpy assigns by reference | |
y=x(2,:)
|
y = x[1,:].copy()
|
numpy slices are by reference | |
y=x(:)
|
y = x.flatten(1)
|
turn array into vector (note that this forces a copy) | |
1:10
|
arange(1.,11.) or r_[1.:11.] or r_[1:10:10j]
|
mat(arange(1.,11.)) or r_[1.:11.,'r']
|
create an increasing vector see note ‘RANGES’ |
0:9
|
arange(10.) or r_[:10.] or r_[:9:10j]
|
mat(arange(10.)) or r_[:10.,'r']
|
create an increasing vector see note ‘RANGES’ |
[1:10]'
|
arange(1.,11.)[:, newaxis]
|
r_[1.:11.,'c']
|
create a column vector |
zeros(3,4)
|
zeros((3,4))
|
mat(...)
|
3x4 rank-2 array full of 64-bit floating point zeros |
zeros(3,4,5)
|
zeros((3,4,5))
|
mat(...)
|
3x4x5 rank-3 array full of 64-bit floating point zeros |
ones(3,4)
|
ones((3,4))
|
mat(...)
|
3x4 rank-2 array full of 64-bit floating point ones |
eye(3)
|
eye(3)
|
mat(...)
|
3x3 identity matrix |
diag(a)
|
diag(a)
|
mat(...)
|
vector of diagonal elements of a |
diag(a,0)
|
diag(a,0)
|
mat(...)
|
square diagonal matrix whose nonzero values are the elements of a |
rand(3,4)
|
random.rand(3,4)
|
mat(...)
|
random 3x4 matrix |
linspace(1,3,4)
|
linspace(1,3,4)
|
mat(...)
|
4 equally spaced samples between 1 and 3, inclusive |
[x,y]=meshgrid(0:8,0:5)
|
mgrid[0:9.,0:6.] or meshgrid(r_[0:9.],r_[0:6.]
|
mat(...)
|
two 2D arrays: one of x values, the other of y values |
ogrid[0:9.,0:6.] or ix_(r_[0:9.],r_[0:6.]
|
mat(...)
|
the best way to eval functions on a grid | |
[x,y]=meshgrid([1,2,4],[2,4,5])
|
meshgrid([1,2,4],[2,4,5])
|
mat(...)
|
|
ix_([1,2,4],[2,4,5])
|
mat(...)
|
the best way to eval functions on a grid | |
repmat(a, m, n)
|
tile(a, (m, n))
|
mat(...)
|
create m by n copies of a |
[a b]
|
concatenate((a,b),1) or hstack((a,b)) or column_stack((a,b)) or c_[a,b]
|
concatenate((a,b),1)
|
concatenate columns of a and b
|
[a; b]
|
concatenate((a,b)) or vstack((a,b)) or r_[a,b]
|
concatenate((a,b))
|
concatenate rows of a and b |
max(max(a))
|
a.max()
|
maximum element of a (with ndims(a)<=2 for matlab) | |
max(a)
|
a.max(0)
|
maximum element of each column of matrix a | |
max(a,[],2)
|
a.max(1)
|
maximum element of each row of matrix a | |
max(a,b)
|
maximum(a, b)
|
compares a and b element-wise, and returns the maximum value from each pair | |
norm(v)
|
sqrt(dot(v,v)) or Sci.linalg.norm(v) or linalg.norm(v)
|
sqrt(dot(v.A,v.A)) or Sci.linalg.norm(v) or linalg.norm(v)
|
L2 norm of vector v |
a & b
|
logical_and(a,b)
|
element-by-element AND operator (Numpy ufunc) see note ‘LOGICOPS’ | |
a | b
|
logical_or(a,b)
|
element-by-element OR operator (Numpy ufunc) see note ‘LOGICOPS’ | |
bitand(a,b)
|
a & b
|
bitwise AND operator (Python native and Numpy ufunc) | |
bitor(a,b)
|
a | b
|
bitwise OR operator (Python native and Numpy ufunc) | |
inv(a)
|
linalg.inv(a)
|
inverse of square matrix a | |
pinv(a)
|
linalg.pinv(a)
|
pseudo-inverse of matrix a | |
rank(a)
|
linalg.matrix_rank(a)
|
rank of a matrix a | |
a\b
|
linalg.solve(a,b) if a is square linalg.lstsq(a,b) otherwise
|
solution of a x = b for x | |
b/a
|
Solve a.T x.T = b.T instead | solution of x a = b for x | |
[U,S,V]=svd(a)
|
U, S, Vh = linalg.svd(a), V = Vh.T
|
singular value decomposition of a | |
chol(a)
|
linalg.cholesky(a).T
|
cholesky factorization of a matrix (chol(a) in matlab returns an upper triangular matrix, but linalg.cholesky(a) returns a lower triangular matrix) | |
[V,D]=eig(a)
|
D,V = linalg.eig(a)
|
eigenvalues and eigenvectors of a | |
[V,D]=eig(a,b)
|
V,D = Sci.linalg.eig(a,b)
|
eigenvalues and eigenvectors of a,b | |
[V,D]=eigs(a,k)
|
find the k largest eigenvalues and eigenvectors of a | ||
[Q,R,P]=qr(a,0)
|
Q,R = Sci.linalg.qr(a)
|
mat(...)
|
QR decomposition |
[L,U,P]=lu(a)
|
L,U = Sci.linalg.lu(a) or LU,P=Sci.linalg.lu_factor(a)
|
mat(...)
|
LU decomposition (note: P(Matlab) == transpose(P(numpy)) ) |
conjgrad
|
Sci.linalg.cg
|
mat(...)
|
Conjugate gradients solver |
fft(a)
|
fft(a)
|
mat(...)
|
Fourier transform of a |
ifft(a)
|
ifft(a)
|
mat(...)
|
inverse Fourier transform of a |
sort(a)
|
sort(a) or a.sort()
|
mat(...)
|
sort the matrix |
[b,I] = sortrows(a,i)
|
I = argsort(a[:,i]), b=a[I,:]
|
sort the rows of the matrix | |
regress(y,X)
|
linalg.lstsq(X,y)
|
multilinear regression | |
decimate(x, q)
|
Sci.signal.resample(x, len(x)/q)
|
downsample with low-pass filtering | |
unique(a)
|
unique(a)
|
||
squeeze(a)
|
a.squeeze()
|
MATLAB
numpy | Notes | |
---|---|---|
help func
|
info(func) or help(func) or func? (in Ipython)
|
get help on the function func |
which func
|
(See note ‘HELP’) | find out where func is defined |
type func
|
source(func) or func?? (in Ipython)
|
print source for func (if not a native function) |
a && b | a and b | short-circuiting logical AND operator (Python native operator); scalar arguments only |
a || b | a or b | short-circuiting logical OR operator (Python native operator); scalar arguments only |
1*i ,1*j ,1i ,1j
|
1j
|
complex numbers |
eps
|
spacing(1)
|
Distance between 1 and the nearest floating point number |
ode45
|
scipy.integrate.ode(f).set_integrator('dopri5')
|
integrate an ODE with Runge-Kutta 4,5 |
ode15s
|
scipy.integrate.ode(f).\ set_integrator('vode', method='bdf', order=15)
|
integrate an ODE with BDF |
Python 与 Matlab 矩阵操作对应表相关推荐
- 范德蒙德矩阵在MATLAB中怎么表示,Python 之 Python与MATLAB 矩阵操作总结
Python 之 Python与MATLAB 矩阵操作小结 一.线形代数理论基础 线形代数(linear algebra)是数学的一个分支,研究矩阵理论.向量空间.线性变换和有限维线形方程组等内容. ...
- MATLAB与Python numpy矩阵操作对应表
背景 NumPy和Matlab不一样,对于多维数组的运算,缺省情况下并不使用矩阵运算,可以调用相应的函数对数组进行矩阵运算.或者使用numpy库提供了的matrix类,用matrix类创建的是矩阵对象 ...
- python读取matlab矩阵_matlab、python中矩阵的互相导入导出方式
还有一种最流行的h5py.. 过几天更新 ------------在python中导出矩阵至matlab------------ 如果矩阵是mxn维的. 那么可以用 : np.savetxt('dev ...
- python矩阵的共轭转置_基础 | Python 下的矩阵操作
关键词:线性代数 / 矩阵 / 运算 今天小编将详细介绍矩阵的运算规则与数学符号应用在矩阵上的含义,如同算数字的加减法需要了解计算公式的规则一样,矩阵的运算虽然与单纯数字运算相似,但其细节的相异处还需 ...
- matlab 比较矩阵差异,Matlab矩阵操作
1求特征值 [v,d]=eig(A); A为你的矩阵,V为特征向量矩阵,D为特征值矩阵 2除法运算 Matlab提供了两种除法运算:左除(\)和右除(/).一般情况下,x=a\b是方程a*x =b的解 ...
- MATLAB从入门到精通:MATLAB矩阵操作
clc clear A=[1 2 3 4; 3 0 3 2; 3 1 0 2; 1 8 2 0]; 方阵的行列式 det(A); 只求特征值 E=eig(A); 特征值与特征向量 [ ...
- MATLAB矩阵操作和算术运算符
矩阵的表示 矩阵之间用空格或者是逗号间隔 矩阵可以拼接(可以用矩阵拼接) 实部矩阵和虚部矩阵构成复数矩阵,一一对应. 冒号表达式: 格式: e1:e2:e3 e1表示初始值 e2表示步长 e ...
- Matlab矩阵操作相关题目
题目1 设有矩阵5x3的矩阵A,将A矩阵的右下角的3x2的子矩阵赋给B >> A = [1,2,3; 4,5,6; 7,8,9; 10,11,12; 13,14,15]; >> ...
- 厉害了,Python也能操作注册表
点击上方"IT共享之家",进行关注 回复"资料"可获赠Python学习福利 今 日 鸡 汤 多情只有春庭月,犹为离人照落花. 前言 大家好,我是IT共享者,人称 ...
- MATLAB程序设计与应用 2. 第2章 MATLAB数据及其运算 2.1 MATLAB数值数据 2.2 MATLAB矩阵的表示 2.3 变量及其操作
MATLAB程序设计与应用 文章目录 MATLAB程序设计与应用 2. 第2章 MATLAB数据及其运算 2.1 MATLAB数值数据 2.1.1 数值数据类型的分类 2.1.2 数据的输出格式 2. ...
最新文章
- Markdown语法简介
- gulp打包js/css时合并成一个文件时的顺序解决
- 纯正价格正则表达式,请指正
- Google(谷歌)中国工程研究院 工程师 方坤 对学生朋友的一些建议
- 将vim变得简单:如何在vim中得到你最喜爱的IDE特性
- 湖南师范大学c语言作业答案,2017年湖南师范大学物理与信息科学学院845C语言程序设计考研题库...
- 为facebook添加html/iframe页面 Create A Facebook Landing Page (Static HTML / iFrame)
- c语言操作access数据类型,2016计算机二级《ACCESS》基本操作题及答案
- Linux根文件组织架构
- 大数据处理分为哪些步骤
- 安装anaconda,jupyter基本操作说明快捷键使用
- 浙江大学公共管理学院与阿里云计算有限公司达成合作 | 凌云时刻
- mysql实际项目中使用多长时间_mysql常在项目中使用的语句总结
- 计算机数学基础试卷及答案,2012计算机数学基础试题及答案.pdf
- pandas的认识与dataframe的认识 day04课件代码
- python点击按钮窗口之间跳转_PyQt5点击按钮,实现界面之间的跳转思路
- 失败的过去式英文翻译_过去式用英语怎么说
- 移动宽带连不上微软服务器,移动宽带有些网站打不开怎么解决?
- fatal: couldn‘t find remote ref develop-XXXX fatal: the remote end hung up unexpectedly
- 软件人才争夺战日趋白热化
热门文章
- Bumped!(dijskra)
- 怎么在一个jsp页面打开时加载servlet
- 银行硬件维护维修工单小程序开发制作
- NAND Flash(spi nand flash和nand flash)和emmc以及ufs通过uboot烧写固件的一些差异
- 激战2怎么选最新的服务器,选哪个服好?《激战2》高玩分析各服务器进驻人数...
- NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE-论文翻译
- everedit 格式化json_Bracket 使用指南
- 关于java中JDBC读取字段属性原理
- MSP430F149学习之IO端口
- DAMA数据管理知识体系指南pdf