关于Python下的Matlab函数对应关系(Numpy)

 更新时间:2022年07月12日 11:56:21   作者:ShuqiaoS  
这篇文章主要介绍了关于Python下的Matlab函数对应关系(Numpy),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Matlab函数对应关系(Numpy)

首先给出官网链接,其中详细说明了在Python下如何用Numpy实现Matlab下相同的函数功能。

博主在用Python撰写代码的时候,想用Python实现在Matlab下某个函数的功能(比如Repmat函数),但是当使用语句

from numpy.matlib import repmat
A = repmat(B, 1, 2)

调用工具包时,虽然可以正常实现功能,但是PyCharm下报出警告:

Importing from numpy.matlib is deprecated since 1.19.0. The matrix subclass is not the recommended way to represent matrices or deal with linear algebra (see https://docs.scipy.org/doc/numpy/user/numpy-for-matlab-users.html). Please adjust your code to use regular ndarray.

随后,通过查阅资料,发现是因为从1.19.0版本后,numpy就不再推荐使用numpy.matlib来实现对应功能了。

因此,大家可以对照官网上的说明来实现替换。

这里截取一小部分:

其他的可以从官网上面找到。

Numpy与Matlab互转操作

在日常使用中,matlab作为我们机器学习以及深度学习的模型训练使用的工具,而线上使用python实现模型落地。因为不可避免常遇到matlab与numpy之间有些操作需要相互转换。

1、常用操作(参考numpy官方说明)

MATLABnumpy说明
helpfuncinfo(func) or help(func) orfunc? (in Ipython)获得函数的帮助
whichfuncsee note HELP查找函数的定义
typefuncsource(func) or func?? (inIpython)查看函数源码
a && ba and b逻辑运算与操作
a || ba or b逻辑运算或操作
1*i, 1*j,1i, 1j1j复数
epsnp.spacing(1)1与最小浮点数的距离
ode45scipy.integrate.solve_ivp(f)求解同阶微分方程-Kutta 4,5
ode15sscipy.integrate.solve_ivp(f, method='BDF')求解变阶微分方程

2、线性变换(参考numpy官方说明)

MATLABNumPy
ndims(a)ndim(a) or a.ndim
numel(a)size(a) or a.size
size(a)shape(a) or a.shape
size(a,n)a.shape[n-1]
[ 1 2 3; 4 5 6 ]array([[1.,2.,3.], [4.,5.,6.]])
[ a b; c d ]vstack([hstack([a,b]), hstack([c,d])]) or bmat('a b; c d')
a(end)a[-1]
a(2,5)a[1,4]
a(2,:)a[1] or a[1,:]
a(1:5,:)a[0:5] or a[:5] or a[0:5,:]
a(end-4:end,:)a[-5:]
a(1:3,5:9)a[0:3][:,4:9]
a([2,4,5],[1,3])a[ix_([1,3,4],[0,2])]
a(3:2:21,:)a[ 2:21:2,:]
a(1:2:end,:)a[ ::2,:]
a(end:-1:1,:) or flipud(a)a[ ::-1,:]
a([1:end 1],:)a[r_[:len(a),0]]
a.'a.transpose() or a.T
a'a.conj().transpose() or a.conj().T
a * ba.dot(b)
a .* ba * b
a./ba/b
a.^3a**3
(a>0.5)(a>0.5)
find(a>0.5)nonzero(a>0.5)
a(:,find(v>0.5))a[:,nonzero(v>0.5)[0]]
a(:,find(v>0.5))a[:,v.T>0.5]
a(a<0.5)=0a[a<0.5]=0
a .* (a>0.5)a * (a>0.5)
a(:) = 3a[:] = 3
y=xy = x.copy()
y=x(2,:)y = x[1,:].copy()
y=x(:)y = x.flatten()
1:10arange(1.,11.) or r_[1.:11.] or r_[1:10:10j]
0:9arange(10.) or r_[:10.] or r_[:9:10j]
[1:10]'arange(1.,11.)[:, newaxis]
zeros(3,4)zeros((3,4))
zeros(3,4,5)zeros((3,4,5))
ones(3,4)ones((3,4))
eye(3)eye(3)
diag(a)diag(a)
diag(a,0)diag(a,0)
rand(3,4)random.rand(3,4)
linspace(1,3,4)linspace(1,3,4)
[x,y]=meshgrid(0:8,0:5)mgrid[0:9.,0:6.] or meshgrid(r_[0:9.],r_[0:6.]
ogrid[0:9.,0:6.] or ix_(r_[0:9.],r_[0:6.] 
[x,y]=meshgrid([1,2,4],[2,4,5])meshgrid([1,2,4],[2,4,5])
ix_([1,2,4],[2,4,5]) 
repmat(a, m, n)tile(a, (m, n))
[a b]concatenate((a,b),1) or hstack((a,b)) or column_stack((a,b))
[a; b]concatenate((a,b)) or vstack((a,b)) or r_[a,b]
max(max(a))a.max()
max(a)a.max(0)
max(a,[],2)a.max(1)
max(a,b)maximum(a, b)
norm(v)sqrt(dot(v,v)) or np.linalg.norm(v)
a & blogical_and(a,b)
a | blogical_or(a,b)
bitand(a,b)a & b
bitor(a,b)a | b
inv(a)linalg.inv(a)
pinv(a)linalg.pinv(a)
rank(a)linalg.matrix_rank(a)
a\blinalg.solve(a,b) if a is square; linalg.lstsq(a,b) otherwise
b/aSolve a.T x.T = b.T instead
[U,S,V]=svd(a)U, S, Vh = linalg.svd(a), V = Vh.T
chol(a)linalg.cholesky(a).T
[V,D]=eig(a)D,V = linalg.eig(a)
[V,D]=eig(a,b)V,D = np.linalg.eig(a,b)
[V,D]=eigs(a,k)
[Q,R,P]=qr(a,0)Q,R = scipy.linalg.qr(a)
[L,U,P]=lu(a)L,U = scipy.linalg.lu(a) or LU,P=scipy.linalg.lu_factor(a)
conjgradscipy.sparse.linalg.cg
fft(a)fft(a)
ifft(a)ifft(a)
sort(a)sort(a) or a.sort()
[b,I] = sortrows(a,i)I = argsort(a[:,i]), b=a[I,:]
regress(y,X)linalg.lstsq(X,y)
decimate(x, q)scipy.signal.resample(x, len(x)/q)
unique(a)unique(a)
squeeze(a)a.squeeze()

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 在Python中执行cmd

    在Python中执行cmd

    这篇文章主要给大家分享在Python中执行cmd,下文描述了三个方法使用os.system()方法、使用os.popen()方法、使用subprocess.Popen(),需要的朋友可以参考一下
    2021-09-09
  • pandas 将索引值相加的方法

    pandas 将索引值相加的方法

    今天小编就为大家分享一篇pandas 将索引值相加的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Python中内置数据类型list,tuple,dict,set的区别和用法

    Python中内置数据类型list,tuple,dict,set的区别和用法

    这篇文章主要给大家介绍了Python中内置数据类型list,tuple,dict,set的区别和用法,都是非常基础的知识,十分的细致全面,有需要的小伙伴可以参考下。
    2015-12-12
  • Python中用xlwt制作表格实例讲解

    Python中用xlwt制作表格实例讲解

    在本篇文章里小编给大家整理的是一篇关于Python中用xlwt制作表格实例讲解内容,有兴趣的朋友们可以学习下。
    2020-11-11
  • Python中Qslider控件实操详解

    Python中Qslider控件实操详解

    在本篇文章里小编给大家整理的是一篇关于Python中Qslider控件实操详解内容,对此有兴趣的朋友们可以跟着学习参考下。
    2021-02-02
  • Python根据站点列表绘制站坐标全球分布图的示例

    Python根据站点列表绘制站坐标全球分布图的示例

    这篇文章主要介绍了Python根据站点列表绘制站坐标全球分布图,输入站点列表文件、snx全球站点坐标文件,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2021-12-12
  • pytorch无坑安装CPU版小白教程(配gpu版链接、conda命令教程)

    pytorch无坑安装CPU版小白教程(配gpu版链接、conda命令教程)

    pip安装无论是cpu还是gpu的pytorch安装,其实官方给了很好的安装流程,本文主要介绍了pytorch无坑安装CPU版小白教程,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Python接口自动化判断元素原理解析

    Python接口自动化判断元素原理解析

    这篇文章主要介绍了Python接口自动化判断元素原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • python简单验证码识别的实现过程

    python简单验证码识别的实现过程

    很多网站登录都需要输入验证码,如果要实现自动登录就不可避免的要识别验证码,这篇文章主要给大家介绍了关于python简单验证码识别的实现过程,需要的朋友可以参考下
    2021-06-06
  • PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解

    PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解

    这篇文章主要介绍了PyCharm+Pipenv虚拟环境作开发和依赖管理的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04

最新评论