matlab numpy equivalents

时间:2021-07-25 13:08:21

THIS IS AN EVOLVING WIKI DOCUMENT. If you find an error, or can fill in an empty box, please fix it! If there's something you'd like to see added, just add it.

General Purpose Equivalents

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

Linear Algebra Equivalents

The notation mat(...) means to use the same expression as array, but convert to matrix with the mat() type converter.

The notation asarray(...) means to use the same expression as matrix, but convert to array with the asarray() type converter.

MATLAB

numpy.array

numpy.matrix

Notes

ndims(a)

ndim(a) or a.ndim

get the number of dimensions of a (tensor rank)

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,:) orflipud(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() ora.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()

Notes

matlab numpy equivalents的更多相关文章

  1. 【搬运】NumPy&lowbar;for&lowbar;Matlab&lowbar;Users

    搬运自:http://scipy.github.io/old-wiki/pages/NumPy_for_Matlab_Users.html. 1.Introduction MATLAB和NumPy/S ...

  2. ubantu16&period;04&plus;mxnet &plus;opencv&plus;cuda8&period;0 环境搭建

    ubantu16.04+mxnet +opencv+cuda8.0 环境搭建 建议:环境搭建完成之后,不要更新系统(内核) 转载请注明出处: 微微苏荷 一 我的安装环境 系统:ubuntu16.04 ...

  3. MXNet设计笔记之:深度学习的编程模式比较

    市面上流行着各式各样的深度学习库,它们风格各异.那么这些函数库的风格在系统优化和用户体验方面又有哪些优势和缺陷呢?本文旨在于比较它们在编程模式方面的差异,讨论这些模式的基本优劣势,以及我们从中可以学到 ...

  4. tensorflow 从入门到摔掉肋骨 教程二

    构造你自己的第一个神经网络 通过手势的图片识别图片比划的数字:1) 现在用1080张64*64的图片作为训练集2) 用120张图片作为测试集  定义初始化值 def load_dataset(): ...

  5. 课程二&lpar;Improving Deep Neural Networks&colon; Hyperparameter tuning&comma; Regularization and Optimization&rpar;,第三周(Hyperparameter tuning&comma; Batch Normalization and Programming Frameworks) —— 2&period;Programming assignments

    Tensorflow Welcome to the Tensorflow Tutorial! In this notebook you will learn all the basics of Ten ...

  6. 分布式机器学习框架:MxNet

    MxNet官网: http://mxnet.readthedocs.io/en/latest/ 前言: caffe是很优秀的dl平台.影响了后面很多相关框架. cxxnet借鉴了很多caffe的思想. ...

  7. 分布式机器学习框架:MxNet 前言

           原文连接:MxNet和Caffe之间有什么优缺点一.前言: Minerva: 高效灵活的并行深度学习引擎 不同于cxxnet追求极致速度和易用性,Minerva则提供了一个高效灵活的平台 ...

  8. 分布式机器学习框架:CXXNet

    caffe是很优秀的dl平台.影响了后面很多相关框架.        cxxnet借鉴了很多caffe的思想.相比之下,cxxnet在实现上更加干净,例如依赖很少,通过mshadow的模板化使得gpu ...

  9. matplotlib基本函数

    数据分析 matlab Numpy + scipy + pandas +matplotlib 数据计算 +科学应用+数据清洗+数据可视化 1 Numpy概述 1 基于c语言的python接口的数值算法 ...

随机推荐

  1. YYModel 源码解读(一)之YYModel&period;h

    #if __has_include(<YYModel/YYModel.h>) FOUNDATION_EXPORT double YYModelVersionNumber; FOUNDATI ...

  2. ATM模拟程序

    一个很简单的ATM模拟程序 #include <stdio.h> void chaxun(int a3){ int b; b=a3; printf("您的余额为:%d\n&quo ...

  3. Spark RDD解密

    1.  基于数据集的处理: 从物理存储上加载数据,然后操作数据,然后写入数据到物理设备; 基于数据集的操作不适应的场景: 不适合于大量的迭代: 不适合交互式查询:每次查询都需要对磁盘进行交互. 基于数 ...

  4. JVM-类文件结构

    无关性的基石 I> "平台无关性"实现在操作系统的应用层上:sun公司以及其他虚拟机提供商发布了许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关 ...

  5. 如何删除ArcSde Service服务

    1)打开“控制面板”,“服务”,找到“ArcSde Service(somename)”,这里somename就是你的ArcSde服务的真实的名字,记住这个名字(为叙述方便,以下用somename表示 ...

  6. lua 加密

    项目要求对lua脚本进行加密,查了一下相关的资料 ,得知lua本身可以使用luac将脚本编译为字节码(bytecode)从而实现加密,试了一下,确实可行.下面是使用原生的lua解释器编译字节码:1.新 ...

  7. Python2和Python3的一些语法区别

    Python2和Python3的一些语法区别 python 1.print 在版本2的使用方法是: print 'this is version 2 也可以是 print('this is versi ...

  8. C&plus;&plus;11 中值得关注的几大变化(网摘)

    C++11 中值得关注的几大变化(详解) 原文出处:[陈皓 coolshell] 源文章来自前C++标准委员会的 Danny Kalev 的 The Biggest Changes in C++11 ...

  9. Ubuntu16&period;04 使用sudo cat EOF 编辑文件,提示Permission denied错误的解决办法

    一.执行命令报错 在Ubuntu16.04下,使用如下命令,修改hosts主机文件,居然提示权限错误: catty@node186:~$ sudo cat <<EOF > /etc/ ...

  10. 使用ajax请求后端程序时,关于目标程序路径问题

    这里涉及到和PHP中类似的问题,有待更新!!!