標籤:

NumPy for MATLAB users (轉載)

NumPy for MATLAB users

Help

MATLAB/Octave Python Description
dochelp -i % browse with Info help() Browse help interactively
help helpordoc doc help Help on using help
help plot help(plot)or?plot Help for a function
help splinesordoc splines help(pylab) Help for a toolbox/library package
demo Demonstration examples

Searching available documentation

MATLAB/Octave Python Description
lookfor plot Search help files
help help(); modules [Numeric] List available packages
which plot help(plot) Locate functions

Using interactively

MATLAB/Octave Python Description
octave -q ipython -pylab Start session
TABorM-? TAB Auto completion
foo(.m) execfile("foo.py")orrun foo.py Run code from file
history hist -n Command history
diary on [..] diary off Save command history
exitorquit CTRL-DCTRL-Z # windowssys.exit() End session

Operators

MATLAB/Octave Python Description
help - Help on operator syntax

Arithmetic operators

MATLAB/Octave Python Description
a=1; b=2; a=1; b=1 Assignment; defining a number
a + b a + boradd(a,b) Addition
a - b a - borsubtract(a,b) Subtraction
a * b a * bormultiply(a,b) Multiplication
a / b a / bordivide(a,b) Division
a .^ b a ** bpower(a,b)pow(a,b) Power, $a^b$
rem(a,b) a % bremainder(a,b)fmod(a,b) Remainder
a+=1 a+=boradd(a,b,a) In place operation to save array creation overhead
factorial(a) Factorial, $n!$

Relational operators

MATLAB/Octave Python Description
a == b a == borequal(a,b) Equal
a < b a < borless(a,b) Less than
a > b a > borgreater(a,b) Greater than
a <= b a <= borless_equal(a,b) Less than or equal
a >= b a >= borgreater_equal(a,b) Greater than or equal
a ~= b a != bornot_equal(a,b) Not Equal

Logical operators

MATLAB/Octave Python Description
a && b a and b Short-circuit logical AND
a || b a or b Short-circuit logical OR
a & borand(a,b) logical_and(a,b)ora and b Element-wise logical AND
a | boror(a,b) logical_or(a,b)ora or b Element-wise logical OR
xor(a, b) logical_xor(a,b) Logical EXCLUSIVE OR
~aornot(a)~aor!a logical_not(a)ornot a Logical NOT
any(a) True if any element is nonzero
all(a) True if all elements are nonzero

root and logarithm

MATLAB/Octave Python Description
sqrt(a) math.sqrt(a) Square root
log(a) math.log(a) Logarithm, base $e$ (natural)
log10(a) math.log10(a) Logarithm, base 10
log2(a) math.log(a, 2) Logarithm, base 2 (binary)
exp(a) math.exp(a) Exponential function

Round off

MATLAB/Octave Python Description
round(a) around(a)ormath.round(a) Round
ceil(a) ceil(a) Round up
floor(a) floor(a) Round down
fix(a) fix(a) Round towards zero

Mathematical constants

MATLAB/Octave Python Description
pi math.pi $/pi=3.141592$
exp(1) math.eormath.exp(1) $e=2.718281$

Missing values; IEEE-754 floating point status flags

MATLAB/Octave Python Description
NaN nan Not a Number
Inf inf Infinity, $/infty$
plus_inf Infinity, $+/infty$
minus_inf Infinity, $-/infty$
plus_zero Plus zero, $+0$
minus_zero Minus zero, $-0$

Complex numbers

MATLAB/Octave Python Description
i z = 1j Imaginary unit
z = 3+4i z = 3+4jorz = complex(3,4) A complex number, $3+4i$
abs(z) abs(3+4j) Absolute value (modulus)
real(z) z.real Real part
imag(z) z.imag Imaginary part
arg(z) Argument
conj(z) z.conj(); z.conjugate() Complex conjugate

Trigonometry

MATLAB/Octave Python Description
atan(a,b) atan2(b,a) Arctangent, $/arctan(b/a)$
hypot(x,y) Hypotenus; Euclidean distance

Generate random numbers

MATLAB/Octave Python Description
rand(1,10) random.random((10,))random.uniform((10,)) Uniform distribution
2+5*rand(1,10) random.uniform(2,7,(10,)) Uniform: Numbers between 2 and 7
rand(6) random.uniform(0,1,(6,6)) Uniform: 6,6 array
randn(1,10) random.standard_normal((10,)) Normal distribution

Vectors

MATLAB/Octave Python Description
a=[2 3 4 5]; a=array([2,3,4,5]) Row vector, $1 /times n$-matrix
adash=[2 3 4 5]"; array([2,3,4,5])[:,NewAxis]array([2,3,4,5]).reshape(-1,1)r_[1:10,"c"] Column vector, $m /times 1$-matrix

Sequences

MATLAB/Octave Python Description
1:10 arange(1,11, dtype=Float)range(1,11) 1,2,3, ... ,10
0:9 arange(10.) 0.0,1.0,2.0, ... ,9.0
1:3:10 arange(1,11,3) 1,4,7,10
10:-1:1 arange(10,0,-1) 10,9,8, ... ,1
10:-3:1 arange(10,0,-3) 10,7,4,1
linspace(1,10,7) linspace(1,10,7) Linearly spaced vector of n=7 points
reverse(a) a[::-1]or Reverse
a(:) = 3 a.fill(3), a[:] = 3 Set all values to same scalar value

Concatenation (vectors)

MATLAB/Octave Python Description
[a a] concatenate((a,a)) Concatenate two vectors
[1:4 a] concatenate((range(1,5),a), axis=1)

Repeating

MATLAB/Octave Python Description
[a a] concatenate((a,a)) 1 2 3, 1 2 3
a.repeat(3)or 1 1 1, 2 2 2, 3 3 3
a.repeat(a)or 1, 2 2, 3 3 3

Miss those elements out

MATLAB/Octave Python Description
a(2:end) a[1:] miss the first element
a([1:9]) miss the tenth element
a(end) a[-1] last element
a(end-1:end) a[-2:] last two elements

Maximum and minimum

MATLAB/Octave Python Description
max(a,b) maximum(a,b) pairwise max
max([a b]) concatenate((a,b)).max() max of all values in two vectors
[v,i] = max(a) v,i = a.max(0),a.argmax(0)

Vector multiplication

MATLAB/Octave Python Description
a.*a a*a Multiply two vectors
dot(u,v) dot(u,v) Vector dot product, $u /cdot v$

Matrices

MATLAB/Octave Python Description
a = [2 3;4 5] a = array([[2,3],[4,5]]) Define a matrix

Concatenation (matrices); rbind and cbind

MATLAB/Octave Python Description
[a ; b] concatenate((a,b), axis=0)vstack((a,b)) Bind rows
[a , b] concatenate((a,b), axis=1)hstack((a,b)) Bind columns
concatenate((a,b), axis=2)dstack((a,b)) Bind slices (three-way arrays)
[a(:), b(:)] concatenate((a,b), axis=None) Concatenate matrices into one vector
[1:4 ; 1:4] concatenate((r_[1:5],r_[1:5])).reshape(2,-1)vstack((r_[1:5],r_[1:5])) Bind rows (from vectors)
[1:4 ; 1:4]" Bind columns (from vectors)

Array creation

MATLAB/Octave Python Description
zeros(3,5) zeros((3,5),Float) 0 filled array
zeros((3,5)) 0 filled array of integers
ones(3,5) ones((3,5),Float) 1 filled array
ones(3,5)*9 Any number filled array
eye(3) identity(3) Identity matrix
diag([4 5 6]) diag((4,5,6)) Diagonal
magic(3) Magic squares; Lo Shu
a = empty((3,3)) Empty array

Reshape and flatten matrices

MATLAB/Octave Python Description
reshape(1:6,3,2)"; arange(1,7).reshape(2,-1)a.setshape(2,3) Reshaping (rows first)
reshape(1:6,2,3); arange(1,7).reshape(-1,2).transpose() Reshaping (columns first)
a"(:) a.flatten()or Flatten to vector (by rows, like comics)
a(:) a.flatten(1) Flatten to vector (by columns)
vech(a) Flatten upper triangle (by columns)

Shared data (slicing)

MATLAB/Octave Python Description
b = a b = a.copy() Copy of a

Indexing and accessing elements (Python: slicing)

MATLAB/Octave Python Description
a = [ 11 12 13 14 ...21 22 23 24 ...31 32 33 34 ] a = array([[ 11, 12, 13, 14 ],[ 21, 22, 23, 24 ],[ 31, 32, 33, 34 ]]) Input is a 3,4 array
a(2,3) a[1,2] Element 2,3 (row,col)
a(1,:) a[0,] First row
a(:,1) a[:,0] First column
a([1 3],[1 4]); a.take([0,2]).take([0,3], axis=1) Array as indices
a(2:end,:) a[1:,] All, except first row
a(end-1:end,:) a[-2:,] Last two rows
a(1:2:end,:) a[::2,:] Strides: Every other row
a[...,2] Third in last dimension (axis)
a(:,[1 3 4]) a.take([0,2,3],axis=1) Remove one column
a.diagonal(offset=0) Diagonal

Assignment

MATLAB/Octave Python Description
a(:,1) = 99 a[:,0] = 99
a(:,1) = [99 98 97]" a[:,0] = array([99,98,97])
a(a>90) = 90; (a>90).choose(a,90)a.clip(min=None, max=90) Clipping: Replace all elements over 90
a.clip(min=2, max=5) Clip upper and lower values

Transpose and inverse

MATLAB/Octave Python Description
a" a.conj().transpose() Transpose
a."ortranspose(a) a.transpose() Non-conjugate transpose
det(a) linalg.det(a)or Determinant
inv(a) linalg.inv(a)or Inverse
pinv(a) linalg.pinv(a) Pseudo-inverse
norm(a) norm(a) Norms
eig(a) linalg.eig(a)[0] Eigenvalues
svd(a) linalg.svd(a) Singular values
chol(a) linalg.cholesky(a) Cholesky factorization
[v,l] = eig(a) linalg.eig(a)[1] Eigenvectors
rank(a) rank(a) Rank

Sum

MATLAB/Octave Python Description
sum(a) a.sum(axis=0) Sum of each column
sum(a") a.sum(axis=1) Sum of each row
sum(sum(a)) a.sum() Sum of all elements
a.trace(offset=0) Sum along diagonal
cumsum(a) a.cumsum(axis=0) Cumulative sum (columns)

Sorting

MATLAB/Octave Python Description
a = [ 4 3 2 ; 2 8 6 ; 1 4 7 ] a = array([[4,3,2],[2,8,6],[1,4,7]]) Example data
sort(a(:)) a.ravel().sort()or Flat and sorted
sort(a) a.sort(axis=0)ormsort(a) Sort each column
sort(a")" a.sort(axis=1) Sort each row
sortrows(a,1) a[a[:,0].argsort(),] Sort rows (by first row)
a.ravel().argsort() Sort, return indices
a.argsort(axis=0) Sort each column, return indices
a.argsort(axis=1) Sort each row, return indices

Maximum and minimum

MATLAB/Octave Python Description
max(a) a.max(0)oramax(a [,axis=0]) max in each column
max(a") a.max(1)oramax(a, axis=1) max in each row
max(max(a)) a.max()or max in array
[v i] = max(a) return indices, i
max(b,c) maximum(b,c) pairwise max
cummax(a)
a.ptp(); a.ptp(0) max-to-min range

Matrix manipulation

MATLAB/Octave Python Description
fliplr(a) fliplr(a)ora[:,::-1] Flip left-right
flipud(a) flipud(a)ora[::-1,] Flip up-down
rot90(a) rot90(a) Rotate 90 degrees
repmat(a,2,3)kron(ones(2,3),a) kron(ones((2,3)),a) Repeat matrix: [ a a a ; a a a ]
triu(a) triu(a) Triangular, upper
tril(a) tril(a) Triangular, lower

Equivalents to "size"

MATLAB/Octave Python Description
size(a) a.shapeora.getshape() Matrix dimensions
size(a,2)orlength(a) a.shape[1]orsize(a, axis=1) Number of columns
length(a(:)) a.sizeorsize(a[, axis=None]) Number of elements
ndims(a) a.ndim Number of dimensions
a.nbytes Number of bytes used in memory

Matrix- and elementwise- multiplication

MATLAB/Octave Python Description
a .* b a * bormultiply(a,b) Elementwise operations
a * b matrixmultiply(a,b) Matrix product (dot product)
inner(a,b)or Inner matrix vector multiplication $a/cdot b"$
outer(a,b)or Outer product
kron(a,b) kron(a,b) Kronecker product
a / b Matrix division, $b{/cdot}a^{-1}$
a / b linalg.solve(a,b) Left matrix division, $b^{-1}{/cdot}a$ /newline (solve linear equations)
vdot(a,b) Vector dot product
cross(a,b) Cross product

Find; conditional indexing

MATLAB/Octave Python Description
find(a) a.ravel().nonzero() Non-zero elements, indices
[i j] = find(a) (i,j) = a.nonzero()(i,j) = where(a!=0) Non-zero elements, array indices
[i j v] = find(a) v = a.compress((a!=0).flat)v = extract(a!=0,a) Vector of non-zero values
find(a>5.5) (a>5.5).nonzero() Condition, indices
a.compress((a>5.5).flat) Return values
a .* (a>5.5) where(a>5.5,0,a)ora * (a>5.5) Zero out elements above 5.5
a.put(2,indices) Replace values

Multi-way arrays

MATLAB/Octave Python Description
a = cat(3, [1 2; 1 2],[3 4; 3 4]); a = array([[[1,2],[1,2]], [[3,4],[3,4]]]) Define a 3-way array
a(1,:,:) a[0,...]

File input and output

MATLAB/Octave Python Description
f = load("data.txt") f = fromfile("data.txt")f = load("data.txt") Reading from a file (2d)
f = load("data.txt") f = load("data.txt") Reading from a file (2d)
x = dlmread("data.csv", ";") f = load("data.csv", delimiter=";") Reading fram a CSV file (2d)
save -ascii data.txt f save("data.csv", f, fmt="%.6f", delimiter=";") Writing to a file (2d)
f.tofile(file="data.csv", format="%.6f", sep=";") Writing to a file (1d)
f = fromfile(file="data.csv", sep=";") Reading from a file (1d)

PlottingBasic x-y plots

MATLAB/Octave Python Description
plot(a) plot(a) 1d line plot
plot(x(:,1),x(:,2),"o") plot(x[:,0],x[:,1],"o") 2d scatter plot
plot(x1,y1, x2,y2) plot(x1,y1,"bo", x2,y2,"go") Two graphs in one plot
plot(x1,y1)hold onplot(x2,y2) plot(x1,y1,"o")plot(x2,y2,"o")show() # as normal Overplotting: Add new plots to current
subplot(211) subplot(211) subplots
plot(x,y,"ro-") plot(x,y,"ro-") Plotting symbols and color

Axes and titles

MATLAB/Octave Python Description
grid on grid() Turn on grid lines
axis equalaxis("equal")replot figure(figsize=(6,6)) 1:1 aspect ratio
axis([ 0 10 0 5 ]) axis([ 0, 10, 0, 5 ]) Set axes manually
title("title")xlabel("x-axis")ylabel("y-axis") Axis labels and titles
text(2,25,"hello") Insert text

Log plots

MATLAB/Octave Python Description
semilogy(a) semilogy(a) logarithmic y-axis
semilogx(a) semilogx(a) logarithmic x-axis
loglog(a) loglog(a) logarithmic x and y axes

Filled plots and bar plots

MATLAB/Octave Python Description
fill(t,s,"b", t,c,"g")% fill has a bug? fill(t,s,"b", t,c,"g", alpha=0.2) Filled plot

Functions

MATLAB/Octave Python Description
f = inline("sin(x/3) - cos(x/5)") Defining functions
ezplot(f,[0,40])fplot("sin(x/3) - cos(x/5)",[0,40])% no ezplot x = arrayrange(0,40,.5)y = sin(x/3) - cos(x/5)plot(x,y, "o") Plot a function for given range

Polar plots

MATLAB/Octave Python Description
theta = 0:.001:2*pi;r = sin(2*theta); theta = arange(0,2*pi,0.001)r = sin(2*theta)
polar(theta, rho) polar(theta, rho)

Histogram plots

MATLAB/Octave Python Description
hist(randn(1000,1))
hist(randn(1000,1), -4:4)
plot(sort(a))

3d dataContour and image plots

MATLAB/Octave Python Description
contour(z) levels, colls = contour(Z, V,origin="lower", extent=(-3,3,-3,3))clabel(colls, levels, inline=1,fmt="%1.1f", fontsize=10) Contour plot
contourf(z); colormap(gray) contourf(Z, V,cmap=cm.gray,origin="lower",extent=(-3,3,-3,3)) Filled contour plot
image(z)colormap(gray) im = imshow(Z,interpolation="bilinear",origin="lower",extent=(-3,3,-3,3)) Plot image data
# imshow() and contour() as above Image with contours
quiver() quiver() Direction field vectors

Perspective plots of surfaces over the x-y plane

MATLAB/Octave Python Description
n=-2:.1:2;[x,y] = meshgrid(n,n);z=x.*exp(-x.^2-y.^2); n=arrayrange(-2,2,.1)[x,y] = meshgrid(n,n)z = x*power(math.e,-x**2-y**2)
mesh(z) Mesh plot
surf(x,y,z)orsurfl(x,y,z)% no surfl() Surface plot

Scatter (cloud) plots

MATLAB/Octave Python Description
plot3(x,y,z,"k+") 3d scatter plot

Save plot to a graphics file

MATLAB/Octave Python Description
plot(1:10)print -depsc2 foo.epsgset output "foo.eps"gset terminal postscript epsplot(1:10) savefig("foo.eps") PostScript
savefig("foo.pdf") PDF
savefig("foo.svg") SVG (vector graphics for www)
print -dpng foo.png savefig("foo.png") PNG (raster graphics)

Data analysisSet membership operators

MATLAB/Octave Python Description
a = [ 1 2 2 5 2 ];b = [ 2 3 4 ]; a = array([1,2,2,5,2])b = array([2,3,4])a = set([1,2,2,5,2])b = set([2,3,4]) Create sets
unique(a) unique1d(a)unique(a)set(a) Set unique
union(a,b) union1d(a,b)a.union(b) Set union
intersect(a,b) intersect1d(a)a.intersection(b) Set intersection
setdiff(a,b) setdiff1d(a,b)a.difference(b) Set difference
setxor(a,b) setxor1d(a,b)a.symmetric_difference(b) Set exclusion
ismember(2,a) 2 in asetmember1d(2,a)contains(a,2) True for set member

Statistics

MATLAB/Octave Python Description
mean(a) a.mean(axis=0)mean(a [,axis=0]) Average
median(a) median(a)ormedian(a [,axis=0]) Median
std(a) a.std(axis=0)orstd(a [,axis=0]) Standard deviation
var(a) a.var(axis=0)orvar(a) Variance
corr(x,y) correlate(x,y)orcorrcoef(x,y) Correlation coefficient
cov(x,y) cov(x,y) Covariance

Interpolation and regression

MATLAB/Octave Python Description
z = polyval(polyfit(x,y,1),x)plot(x,y,"o", x,z ,"-") (a,b) = polyfit(x,y,1)plot(x,y,"o", x,a*x+b,"-") Straight line fit
a = x/y linalg.lstsq(x,y) Linear least squares $y = ax + b$
polyfit(x,y,3) polyfit(x,y,3) Polynomial fit

Non-linear methodsPolynomials, root finding

MATLAB/Octave Python Description
poly() Polynomial
roots([1 -1 -1]) roots() Find zeros of polynomial
f = inline("1/x - (x-1)")fzero(f,1) Find a zero near $x = 1$
solve("1/x = x-1") Solve symbolic equations
polyval([1 2 1 2],1:10) polyval(array([1,2,1,2]),arange(1,11)) Evaluate polynomial

Differential equations

MATLAB/Octave Python Description
diff(a) diff(x, n=1, axis=0) Discrete difference function and approximate derivative
Solve differential equations

Fourier analysis

MATLAB/Octave Python Description
fft(a) fft(a)or Fast fourier transform
ifft(a) ifft(a)or Inverse fourier transform
convolve(x,y) Linear convolution

Symbolic algebra; calculus

MATLAB/Octave Python Description
factor() Factorization

Programming

MATLAB/Octave Python Description
.m .py Script file extension
%%or# # Comment symbol (rest of line)
% must be in MATLABPATH% must be in LOADPATH from pylab import * Import library functions
string="a=234";eval(string) string="a=234"eval(string) Eval

Loops

MATLAB/Octave Python Description
for i=1:5; disp(i); end for i in range(1,6): print(i) for-statement
for i=1:5disp(i)disp(i*2)end for i in range(1,6):print(i)print(i*2) Multiline for statements

Conditionals

MATLAB/Octave Python Description
if 1>0 a=100; end if 1>0: a=100 if-statement
if 1>0 a=100; else a=0; end if-else-statement

Debugging

MATLAB/Octave Python Description
ans Most recent evaluated expression
whosorwho List variables loaded into memory
clear xorclear [all] Clear variable $x$ from memory
disp(a) print a Print

Working directory and OS

MATLAB/Octave Python Description
dirorls os.listdir(".") List files in directory
what grep.grep("*.py") List script files in directory
pwd os.getcwd() Displays the current working directory
cd foo os.chdir("foo") Change working directory
!notepadsystem("notepad") os.system("notepad")os.popen("notepad") Invoke a System Command

推薦閱讀:

【轉載】女殺手
[轉載]《命理成數》5000——5099 
去痘疤的方法(轉載)
【轉載】一針見血!精闢到毒死人的句子
[轉載]把握面相健康之密匙   轉自紅人相學

TAG:MATLAB | 轉載 |