matlab numpy equivalents
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 |
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).\ |
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.], |
mat([[1.,2.,3.], |
2x3 matrix literal |
|
[ a b; c d ] |
vstack([hstack([a,b]), |
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 |
mat(arange(1.,11.))or |
create an increasing vector see note 'RANGES' |
|
0:9 |
arange(10.) or |
mat(arange(10.)) or |
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 |
mat(...) |
two 2D arrays: one of x values, the other of y values |
|
ogrid[0:9.,0:6.] or |
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 |
concatenate((a,b),1) |
concatenate columns of a and b |
|
[a; b] |
concatenate((a,b)) or |
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 |
sqrt(dot(v.A,v.A))or |
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 |
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 |
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的更多相关文章
- 【搬运】NumPy_for_Matlab_Users
搬运自:http://scipy.github.io/old-wiki/pages/NumPy_for_Matlab_Users.html. 1.Introduction MATLAB和NumPy/S ...
- ubantu16.04+mxnet +opencv+cuda8.0 环境搭建
ubantu16.04+mxnet +opencv+cuda8.0 环境搭建 建议:环境搭建完成之后,不要更新系统(内核) 转载请注明出处: 微微苏荷 一 我的安装环境 系统:ubuntu16.04 ...
- MXNet设计笔记之:深度学习的编程模式比较
市面上流行着各式各样的深度学习库,它们风格各异.那么这些函数库的风格在系统优化和用户体验方面又有哪些优势和缺陷呢?本文旨在于比较它们在编程模式方面的差异,讨论这些模式的基本优劣势,以及我们从中可以学到 ...
- tensorflow 从入门到摔掉肋骨 教程二
构造你自己的第一个神经网络 通过手势的图片识别图片比划的数字:1) 现在用1080张64*64的图片作为训练集2) 用120张图片作为测试集 定义初始化值 def load_dataset(): ...
- 课程二(Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization),第三周(Hyperparameter tuning, Batch Normalization and Programming Frameworks) —— 2.Programming assignments
Tensorflow Welcome to the Tensorflow Tutorial! In this notebook you will learn all the basics of Ten ...
- 分布式机器学习框架:MxNet
MxNet官网: http://mxnet.readthedocs.io/en/latest/ 前言: caffe是很优秀的dl平台.影响了后面很多相关框架. cxxnet借鉴了很多caffe的思想. ...
- 分布式机器学习框架:MxNet 前言
原文连接:MxNet和Caffe之间有什么优缺点一.前言: Minerva: 高效灵活的并行深度学习引擎 不同于cxxnet追求极致速度和易用性,Minerva则提供了一个高效灵活的平台 ...
- 分布式机器学习框架:CXXNet
caffe是很优秀的dl平台.影响了后面很多相关框架. cxxnet借鉴了很多caffe的思想.相比之下,cxxnet在实现上更加干净,例如依赖很少,通过mshadow的模板化使得gpu ...
- matplotlib基本函数
数据分析 matlab Numpy + scipy + pandas +matplotlib 数据计算 +科学应用+数据清洗+数据可视化 1 Numpy概述 1 基于c语言的python接口的数值算法 ...
随机推荐
- xp 中的IIS安装成功之后,访问网页显示没有权限访问解决方法
在做xp的IIS发布网站时遇到一个问题就是当你访问网站的时候,显示没有权限访问网站,但是我已经开启了匿名访问网站了,怎么还没有权限访问呢?后来经过上网搜资料解决,当时很多网上都说没打开匿名访问,当时我 ...
- Oracle——事务(Transaction)
事务: 事务是指作为单个逻辑工作单元执行的一组相关操作. 这些操作要求全部完成或者全部不完成. 使用事务的原因:保证数据的安全有效. 事务的四个特点:(ACID) 1.原子性(Atomic):事务中所 ...
- ###学习《C++ Primer》- 3
点击查看Evernote原文. #@author: gr #@date: 2014-10-04 #@email: forgerui@gmail.com Part 3: STL泛型算法(第10章) 一. ...
- .Net 程序集 签名工具sn.exe 密钥对SNK文件 最基本的用法
阐述签名工具这个概念之前,我先说说它不是什么: 1.它不是用于给程序集加密的工具,它与阻止Reflector或ILSpy对程序集进行反编译一毛钱关系都没有. 2.它很讨厌人们把它和加密联系在一起. 我 ...
- 12_CXF入门
[CXF] Apache CXF = Celtix + Xfire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF.Apache CXF 是一个开 ...
- KMP(匹配)
Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input 输入中含有一些数据, ...
- php header示例代码(推荐)
<?php /*** Function: PHP header() examples (PHP) ** Desc: Some examples on how to use the header( ...
- windows phone 操作 http异步返回结果
wp中为了提升用户体验,砍掉了http的同步操作,仅支持http异步请求,那么该如何及时处理异步操作返回的结果.纠结了很久,终于在技术群中好友的帮助下解决了问题,借助事件,将异步编程模型模式简单的处理 ...
- 队列(顺序存储)C++模板实现
队列:一端进行插入,另一端进行删除的线性结构,具有先进先出性.利用数组来实现队列将面临"假溢出"的情况,如下图所示: front:永远指向队首元素,队首在本文中是允许删除元素的一端 ...
- C# 解析带前缀的Xml节点内容
一般的xml文件相信大家都会解析了,但是遇到有命名空间的带前缀的xml,对于新手可能会有点问题.我这里在论坛解答的时候就遇到过一题,见怎么获取XML节点里面的内容,在线求教.这里给大家演示一下. 他的 ...