NumPy for Numeric/numarray users

Help

Numeric (typical differences)Python; NumPy, MatplotlibDescription
help()Browse help interactively
helpHelp on using help
help(plot) or ?plotHelp for a function
help(pylab)Help for a toolbox/library package

Searching available documentation

Numeric (typical differences)Python; NumPy, MatplotlibDescription
help(); modules [Numeric]List available packages
help(plot)Locate functions

Using interactively

Numeric (typical differences)Python; NumPy, MatplotlibDescription
ipython -pylabStart session
TABAuto completion
execfile('foo.py') or run foo.pyRun code from file
hist -nCommand history
CTRL-D
CTRL-Z # windows
sys.exit()
End session

Operators

Numeric (typical differences)Python; NumPy, MatplotlibDescription

Arithmetic operators

Numeric (typical differences)Python; NumPy, MatplotlibDescription
a=1; b=1Assignment; defining a number
a + b or add(a,b)Addition
a - b or subtract(a,b)Subtraction
a * b or multiply(a,b)Multiplication
a / b or divide(a,b)Division
a ** b
power(a,b)
pow(a,b)
Power, $a^b$
a % b
remainder(a,b)
fmod(a,b)
Remainder
a+=b or add(a,b,a)In place operation to save array creation overhead

Relational operators

Numeric (typical differences)Python; NumPy, MatplotlibDescription
a == b or equal(a,b)Equal
a < b or less(a,b)Less than
a > b or greater(a,b)Greater than
a <= b or less_equal(a,b)Less than or equal
a >= b or greater_equal(a,b)Greater than or equal
a != b or not_equal(a,b)Not Equal

Logical operators

Numeric (typical differences)Python; NumPy, MatplotlibDescription
a and bShort-circuit logical AND
a or bShort-circuit logical OR
logical_and(a,b) or a and bElement-wise logical AND
logical_or(a,b) or a or bElement-wise logical OR
logical_xor(a,b)Logical EXCLUSIVE OR
logical_not(a) or not aLogical NOT

root and logarithm

Numeric (typical differences)Python; NumPy, MatplotlibDescription
math.sqrt(a)Square root
math.log(a)Logarithm, base $e$ (natural)
math.log10(a)Logarithm, base 10
math.log(a, 2)Logarithm, base 2 (binary)
math.exp(a)Exponential function

Round off

Numeric (typical differences)Python; NumPy, MatplotlibDescription
around(a) or math.round(a)Round
ceil(a)Round up
floor(a)Round down
fix(a)Round towards zero

Mathematical constants

Numeric (typical differences)Python; NumPy, MatplotlibDescription
math.pi$\pi=3.141592$
math.e or math.exp(1)$e=2.718281$

Missing values; IEEE-754 floating point status flags

Numeric (typical differences)Python; NumPy, MatplotlibDescription
nanNot a Number
infInfinity, $\infty$
plus_infInfinity, $+\infty$
minus_infInfinity, $-\infty$
plus_zeroPlus zero, $+0$
minus_zeroMinus zero, $-0$

Complex numbers

Numeric (typical differences)Python; NumPy, MatplotlibDescription
z = 1jImaginary unit
z = 3+4j or z = complex(3,4)A complex number, $3+4i$
abs(3+4j)Absolute value (modulus)
z.realReal part
z.imagImaginary part
z.conj(); z.conjugate()Complex conjugate

Trigonometry

Numeric (typical differences)Python; NumPy, MatplotlibDescription
atan2(b,a)Arctangent, $\arctan(b/a)$
hypot(x,y)Hypotenus; Euclidean distance

Generate random numbers

Numeric (typical differences)Python; NumPy, MatplotlibDescription
random((10,))
uniform(0,1,(10,))
random.random((10,))
random.uniform((10,))
Uniform distribution
uniform(2,7,(10,))random.uniform(2,7,(10,))Uniform: Numbers between 2 and 7
uniform(0,1,(6,6))random.uniform(0,1,(6,6))Uniform: 6,6 array
standard_normal((10,))random.standard_normal((10,))Normal distribution

Vectors

Numeric (typical differences)Python; NumPy, MatplotlibDescription
a=array([2,3,4,5])Row vector, $1 \times n$-matrix
transpose(array([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

Numeric (typical differences)Python; NumPy, MatplotlibDescription
arange(1,11, typecode=Float)arange(1,11, dtype=Float)
range(1,11)
1,2,3, ... ,10
arange(10.)0.0,1.0,2.0, ... ,9.0
arange(1,11,3)1,4,7,10
arange(10,0,-1)10,9,8, ... ,1
arange(10,0,-3)10,7,4,1
linspace(1,10,7)Linearly spaced vector of n=7 points
a[::-1]; a.reverse()a[::-1]Reverse
a.fill(3), a[:] = 3Set all values to same scalar value

Concatenation (vectors)

Numeric (typical differences)Python; NumPy, MatplotlibDescription
concatenate((a,a))Concatenate two vectors
concatenate((range(1,5),a), axis=1)

Repeating

Numeric (typical differences)Python; NumPy, MatplotlibDescription
concatenate((a,a))1 2 3, 1 2 3
repeat(a,3)a.repeat(3)1 1 1, 2 2 2, 3 3 3
repeat(a,a)a.repeat(a)1, 2 2, 3 3 3

Miss those elements out

Numeric (typical differences)Python; NumPy, MatplotlibDescription
a[1:]miss the first element
a[-1]last element
a[-2:]last two elements

Maximum and minimum

Numeric (typical differences)Python; NumPy, MatplotlibDescription
maximum(a,b)pairwise max
concatenate((a,b)).max()max of all values in two vectors
v,i = a.max(0),a.argmax(0)

Vector multiplication

Numeric (typical differences)Python; NumPy, MatplotlibDescription
a*aMultiply two vectors
dot(u,v)Vector dot product, $u \cdot v$

Matrices

Numeric (typical differences)Python; NumPy, MatplotlibDescription
a = array([[2,3],[4,5]])Define a matrix

Concatenation (matrices); rbind and cbind

Numeric (typical differences)Python; NumPy, MatplotlibDescription
concatenate((a,b), axis=0)
vstack((a,b))
Bind rows
concatenate((a,b), axis=1)
hstack((a,b))
Bind columns
concatenate((a,b), axis=2)
dstack((a,b))
Bind slices (three-way arrays)
concatenate((a,b), axis=None)Concatenate matrices into one vector
concatenate((r_[1:5],r_[1:5])).reshape(2,-1)
vstack((r_[1:5],r_[1:5]))
Bind rows (from vectors)

Array creation

Numeric (typical differences)Python; NumPy, MatplotlibDescription
zeros((3,5),Float)0 filled array
zeros((3,5))0 filled array of integers
ones((3,5),Float)1 filled array
ones((3,5))*9Any number filled array
identity(3)Identity matrix
diag((4,5,6))Diagonal
a = empty((3,3))Empty array

Reshape and flatten matrices

Numeric (typical differences)Python; NumPy, MatplotlibDescription
a.shape = (2,3)arange(1,7).reshape(2,-1)
a.setshape(2,3)
Reshaping (rows first)
arange(1,7).reshape(-1,2).transpose()Reshaping (columns first)
ravel(a)a.flatten()Flatten to vector (by rows, like comics)
ravel(transpose(a))a.flatten(1)Flatten to vector (by columns)

Shared data (slicing)

Numeric (typical differences)Python; NumPy, MatplotlibDescription
b = a.copy()Copy of a

Indexing and accessing elements (Python: slicing)

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

Assignment

Numeric (typical differences)Python; NumPy, MatplotlibDescription
a[:,0] = 99
a[:,0] = array([99,98,97])
choose(a>90, (a,90))(a>90).choose(a,90)
a.clip(min=None, max=90)
Clipping: Replace all elements over 90
clip(a,2,5)a.clip(min=2, max=5)Clip upper and lower values

Transpose and inverse

Numeric (typical differences)Python; NumPy, MatplotlibDescription
transpose(a)a.conj().transpose()Transpose
a.transpose()Non-conjugate transpose
determinant(a)linalg.det(a)Determinant
inverse(a)linalg.inv(a)Inverse
linalg.pinv(a)Pseudo-inverse
norm(a)Norms
eigenvalues(a)linalg.eig(a)[0]Eigenvalues
singular_value_decomposition(a)linalg.svd(a)Singular values
linalg.cholesky(a)Cholesky factorization
eigenvectors(a)linalg.eig(a)[1]Eigenvectors
rank(a)Rank

Sum

Numeric (typical differences)Python; NumPy, MatplotlibDescription
a.sum(axis=0)Sum of each column
a.sum(axis=1)Sum of each row
a.sum()Sum of all elements
a.trace(offset=0)Sum along diagonal
a.cumsum(axis=0)Cumulative sum (columns)

Sorting

Numeric (typical differences)Python; NumPy, MatplotlibDescription
a = array([[4,3,2],[2,8,6],[1,4,7]])Example data
sort(a.flat)a.ravel().sort()Flat and sorted
a.sort(axis=0) or msort(a)Sort each column
a.sort(axis=1)Sort each row
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

Numeric (typical differences)Python; NumPy, MatplotlibDescription
a.max(0) or amax(a [,axis=0])max in each column
a.max(1) or amax(a, axis=1)max in each row
max(a.flat)a.max()max in array
maximum(b,c)pairwise max
a.ptp(); a.ptp(0)max-to-min range

Matrix manipulation

Numeric (typical differences)Python; NumPy, MatplotlibDescription
fliplr(a) or a[:,::-1]Flip left-right
flipud(a) or a[::-1,]Flip up-down
rot90(a)Rotate 90 degrees
kron(ones((2,3)),a)Repeat matrix: [ a a a ; a a a ]
triu(a)Triangular, upper
tril(a)Triangular, lower

Equivalents to "size"

Numeric (typical differences)Python; NumPy, MatplotlibDescription
a.shapea.shape or a.getshape()Matrix dimensions
a.shape[1] or size(a, axis=1)a.shape[1] or size(a, axis=1)Number of columns
a.size or size(a[, axis=None])Number of elements
a.ndimNumber of dimensions
a.nbytesNumber of bytes used in memory

Matrix- and elementwise- multiplication

Numeric (typical differences)Python; NumPy, MatplotlibDescription
a * b or multiply(a,b)Elementwise operations
matrixmultiply(a,b)Matrix product (dot product)
innerproduct(a,b)inner(a,b)Inner matrix vector multiplication $a\cdot b'$
outerproduct(a,b)outer(a,b)Outer product
kron(a,b)Kronecker product
solve_linear_equations(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

Numeric (typical differences)Python; NumPy, MatplotlibDescription
nonzero(a.flat)a.ravel().nonzero()Non-zero elements, indices
(i,j) = nonzero(a)(i,j) = a.nonzero()
(i,j) = where(a!=0)
Non-zero elements, array indices
v = compress(a.flat!=0, a.flat)v = a.compress((a!=0).flat)
v = extract(a!=0,a)
Vector of non-zero values
nonzero(a.flat>5.5)(a>5.5).nonzero()Condition, indices
compress(a.flat>5.5, a.flat)a.compress((a>5.5).flat)Return values
where(a>5.5,0,a) or a * (a>5.5)Zero out elements above 5.5
a.put(2,indices)Replace values

Multi-way arrays

Numeric (typical differences)Python; NumPy, MatplotlibDescription
a = array([[[1,2],[1,2]], [[3,4],[3,4]]])Define a 3-way array
a[0,...]

File input and output

Numeric (typical differences)Python; NumPy, MatplotlibDescription
f = fromfile("data.txt")
f = load("data.txt")
Reading from a file (2d)
f = load("data.txt")Reading from a file (2d)
f = load('data.csv', delimiter=';')Reading fram a CSV file (2d)
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)

Plotting

Basic x-y plots

Numeric (typical differences)Python; NumPy, MatplotlibDescription
plot(a)1d line plot
plot(x[:,0],x[:,1],'o')2d scatter plot
plot(x1,y1,'bo', x2,y2,'go')Two graphs in one plot
plot(x1,y1,'o')
plot(x2,y2,'o')
show() # as normal
Overplotting: Add new plots to current
subplot(211)subplots
plot(x,y,'ro-')Plotting symbols and color

Axes and titles

Numeric (typical differences)Python; NumPy, MatplotlibDescription
grid()Turn on grid lines
figure(figsize=(6,6))1:1 aspect ratio
axis([ 0, 10, 0, 5 ])Set axes manually
text(2,25,'hello')Insert text

Log plots

Numeric (typical differences)Python; NumPy, MatplotlibDescription
semilogy(a)logarithmic y-axis
semilogx(a)logarithmic x-axis
loglog(a)logarithmic x and y axes

Filled plots and bar plots

Numeric (typical differences)Python; NumPy, MatplotlibDescription
fill(t,s,'b', t,c,'g', alpha=0.2)Filled plot

Functions

Numeric (typical differences)Python; NumPy, MatplotlibDescription
x = arrayrange(0,40,.5)
y = sin(x/3) - cos(x/5)
plot(x,y, 'o')
Plot a function for given range

Polar plots

Numeric (typical differences)Python; NumPy, MatplotlibDescription
theta = arange(0,2*pi,0.001)
r = sin(2*theta)
polar(theta, rho)

Histogram plots

Numeric (typical differences)Python; NumPy, MatplotlibDescription

3d data

Contour and image plots

Numeric (typical differences)Python; NumPy, MatplotlibDescription
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, V,
cmap=cm.gray,
origin='lower',
extent=(-3,3,-3,3))
Filled contour plot
im = imshow(Z,
interpolation='bilinear',
origin='lower',
extent=(-3,3,-3,3))
Plot image data
# imshow() and contour() as aboveImage with contours
quiver()Direction field vectors

Perspective plots of surfaces over the x-y plane

Numeric (typical differences)Python; NumPy, MatplotlibDescription
n=arrayrange(-2,2,.1)
[x,y] = meshgrid(n,n)
z = x*power(math.e,-x**2-y**2)
Mesh plot

Scatter (cloud) plots

Numeric (typical differences)Python; NumPy, MatplotlibDescription

Save plot to a graphics file

Numeric (typical differences)Python; NumPy, MatplotlibDescription
savefig('foo.eps')PostScript
savefig('foo.pdf')PDF
savefig('foo.svg')SVG (vector graphics for www)
savefig('foo.png')PNG (raster graphics)

Data analysis

Set membership operators

Numeric (typical differences)Python; NumPy, MatplotlibDescription
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
unique1d(a)
unique(a)
set(a)
Set unique
union1d(a,b)
a.union(b)
Set union
intersect1d(a)
a.intersection(b)
Set intersection
setdiff1d(a,b)
a.difference(b)
Set difference
setxor1d(a,b)
a.symmetric_difference(b)
Set exclusion
2 in a
setmember1d(2,a)
contains(a,2)
True for set member

Statistics

Numeric (typical differences)Python; NumPy, MatplotlibDescription
average(a [,axis=0])a.mean(axis=0)
mean(a [,axis=0])
Average
median(a) or median(a [,axis=0])Median
a.std(axis=0) or std(a [,axis=0])Standard deviation
a.var(axis=0) or var(a)Variance
correlate(x,y) or corrcoef(x,y)Correlation coefficient
cov(x,y)Covariance

Interpolation and regression

Numeric (typical differences)Python; NumPy, MatplotlibDescription
(a,b) = polyfit(x,y,1)
plot(x,y,'o', x,a*x+b,'-')
Straight line fit
(a,b) = linear_least_squares(x,y)[0]linalg.lstsq(x,y)Linear least squares $y = ax + b$
polyfit(x,y,3)Polynomial fit

Non-linear methods

Polynomials, root finding

Numeric (typical differences)Python; NumPy, MatplotlibDescription
poly()Polynomial
roots()Find zeros of polynomial
polyval(array([1,2,1,2]),arange(1,11))Evaluate polynomial

Differential equations

Numeric (typical differences)Python; NumPy, MatplotlibDescription
diff(x, n=1, axis=0)Discrete difference function and approximate derivative

Fourier analysis

Numeric (typical differences)Python; NumPy, MatplotlibDescription
fft(a)fft(a)Fast fourier transform
inverse_fft(a)ifft(a)Inverse fourier transform
convolve(x,y)Linear convolution

Symbolic algebra; calculus

Numeric (typical differences)Python; NumPy, MatplotlibDescription

Programming

Numeric (typical differences)Python; NumPy, MatplotlibDescription
.pyScript file extension
#Comment symbol (rest of line)
from pylab import *Import library functions
string="a=234"
eval(string)
Eval

Loops

Numeric (typical differences)Python; NumPy, MatplotlibDescription
for i in range(1,6): print(i)for-statement
for i in range(1,6):
print(i)
print(i*2)
Multiline for statements

Conditionals

Numeric (typical differences)Python; NumPy, MatplotlibDescription
if 1>0: a=100if-statement

Debugging

Numeric (typical differences)Python; NumPy, MatplotlibDescription
print aPrint

Working directory and OS

Numeric (typical differences)Python; NumPy, MatplotlibDescription
os.listdir(".")List files in directory
grep.grep("*.py")List script files in directory
os.getcwd()Displays the current working directory
os.chdir('foo')Change working directory
os.system('notepad')
os.popen('notepad')
Invoke a System Command

Time-stamp: "2007-11-09T16:46:36 vidar"
©2006 Vidar Bronken Gundersen, /mathesaurus.sf.net
Permission is granted to copy, distribute and/or modify this document as long as the above attribution is retained.