NumPy for R (and S-Plus) users – Mathesaurus (original) (raw)

Operators

R/S-Plus Python Description
help(Syntax) Help on operator syntax

Arithmetic operators

R/S-Plus Python Description
a<-1; b<-2 a=1; b=1 Assignment; defining a number
a + b a + b or add(a,b) Addition
a - b a - b or subtract(a,b) Subtraction
a * b a * b or multiply(a,b) Multiplication
a / b a / b or divide(a,b) Division
a ^ b a ** bpower(a,b)pow(a,b) Power, aba^bab
a %% b a % bremainder(a,b)fmod(a,b) Remainder
a %/% b Integer division
a+=b or add(a,b,a) In place operation to save array creation overhead
factorial(a) Factorial, n!n!n!

Relational operators

R/S-Plus Python Description
a == b a == b or equal(a,b) Equal
a < b a < b or less(a,b) Less than
a > b a > b or greater(a,b) Greater than
a <= b a <= b or less_equal(a,b) Less than or equal
a >= b a >= b or greater_equal(a,b) Greater than or equal
a != b a != b or not_equal(a,b) Not Equal

Logical operators

R/S-Plus Python Description
a && b a and b Short-circuit logical AND
a | b a or b
a & b logical_and(a,b) or a and b Element-wise logical AND
a | b logical_or(a,b) or a or b Element-wise logical OR
xor(a, b) logical_xor(a,b) Logical EXCLUSIVE OR
!a logical_not(a) or not a Logical NOT

root and logarithm

R/S-Plus Python Description
sqrt(a) math.sqrt(a) Square root
log(a) math.log(a) Logarithm, base eee (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

R/S-Plus Python Description
round(a) around(a) or math.round(a) Round
ceil(a) ceil(a) Round up
floor(a) floor(a) Round down
fix(a) Round towards zero

Mathematical constants

R/S-Plus Python Description
pi math.pi pi=3.141592\pi=3.141592pi=3.141592
exp(1) math.e or math.exp(1) e=2.718281e=2.718281e=2.718281

Missing values; IEEE-754 floating point status flags

R/S-Plus Python Description
nan Not a Number
inf Infinity, infty\inftyinfty
plus_inf Infinity, +infty+\infty+infty
minus_inf Infinity, −infty-\inftyinfty
plus_zero Plus zero, +0+0+0
minus_zero Minus zero, −0-00

Complex numbers

R/S-Plus Python Description
1i z = 1j Imaginary unit
z <- 3+4i z = 3+4j or z = complex(3,4) A complex number, 3+4i3+4i3+4i
abs(3+4i) or Mod(3+4i) abs(3+4j) Absolute value (modulus)
Re(3+4i) z.real Real part
Im(3+4i) z.imag Imaginary part
Arg(3+4i) Argument
Conj(3+4i) z.conj(); z.conjugate() Complex conjugate

Trigonometry

R/S-Plus Python Description
atan2(b,a) atan2(b,a) Arctangent, arctan(b/a)\arctan(b/a)arctan(b/a)
hypot(x,y) Hypotenus; Euclidean distance

Generate random numbers

R/S-Plus Python Description
runif(10) random.random((10,))random.uniform((10,)) Uniform distribution
runif(10, min=2, max=7) random.uniform(2,7,(10,)) Uniform: Numbers between 2 and 7
matrix(runif(36),6) random.uniform(0,1,(6,6)) Uniform: 6,6 array
rnorm(10) random.standard_normal((10,)) Normal distribution

Matrices

R/S-Plus Python Description
rbind(c(2,3),c(4,5))array(c(2,3,4,5), dim=c(2,2)) a = array([[2,3],[4,5]]) Define a matrix

Concatenation (matrices); rbind and cbind

R/S-Plus Python Description
rbind(a,b) concatenate((a,b), axis=0)vstack((a,b)) Bind rows
cbind(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)
concatenate((a,b), axis=None) Concatenate matrices into one vector
rbind(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)
cbind(1:4,1:4) Bind columns (from vectors)

Array creation

R/S-Plus Python Description
matrix(0,3,5) or array(0,c(3,5)) zeros((3,5),Float) 0 filled array
zeros((3,5)) 0 filled array of integers
matrix(1,3,5) or array(1,c(3,5)) ones((3,5),Float) 1 filled array
matrix(9,3,5) or array(9,c(3,5)) Any number filled array
diag(1,3) identity(3) Identity matrix
diag(c(4,5,6)) diag((4,5,6)) Diagonal
a = empty((3,3)) Empty array

Reshape and flatten matrices

R/S-Plus Python Description
matrix(1:6,nrow=3,byrow=T) arange(1,7).reshape(2,-1)a.setshape(2,3) Reshaping (rows first)
matrix(1:6,nrow=2)array(1:6,c(2,3)) arange(1,7).reshape(-1,2).transpose() Reshaping (columns first)
as.vector(t(a)) a.flatten() or Flatten to vector (by rows, like comics)
as.vector(a) a.flatten(1) Flatten to vector (by columns)
a[row(a) <= col(a)] Flatten upper triangle (by columns)

Shared data (slicing)

R/S-Plus Python Description
b = a b = a.copy() Copy of a

Indexing and accessing elements (Python: slicing)

R/S-Plus Python Description
a <- rbind(c(11, 12, 13, 14), c(21, 22, 23, 24), c(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.take([0,2]).take([0,3], axis=1) Array as indices
a[-1,] a[1:,] All, except first row
a[-2:,] Last two rows
a[::2,:] Strides: Every other row
a[...,2] Third in last dimension (axis)
a[-2,-3] All, except row,column (2,3)
a[,-2] a.take([0,2,3],axis=1) Remove one column
a.diagonal(offset=0) Diagonal

Assignment

R/S-Plus Python Description
a[,1] <- 99 a[:,0] = 99
a[,1] <- c(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

R/S-Plus Python Description
t(a) a.conj().transpose() Transpose
a.transpose() Non-conjugate transpose
det(a) linalg.det(a) or Determinant
solve(a) linalg.inv(a) or Inverse
ginv(a) linalg.pinv(a) Pseudo-inverse
norm(a) Norms
eigen(a)$values linalg.eig(a)[0] Eigenvalues
svd(a)$d linalg.svd(a) Singular values
linalg.cholesky(a) Cholesky factorization
eigen(a)$vectors linalg.eig(a)[1] Eigenvectors
rank(a) rank(a) Rank

Sum

R/S-Plus Python Description
apply(a,2,sum) a.sum(axis=0) Sum of each column
apply(a,1,sum) a.sum(axis=1) Sum of each row
sum(a) a.sum() Sum of all elements
a.trace(offset=0) Sum along diagonal
apply(a,2,cumsum) a.cumsum(axis=0) Cumulative sum (columns)

Sorting

R/S-Plus Python Description
a = array([[4,3,2],[2,8,6],[1,4,7]]) Example data
t(sort(a)) a.ravel().sort() or Flat and sorted
apply(a,2,sort) a.sort(axis=0) or msort(a) Sort each column
t(apply(a,1,sort)) a.sort(axis=1) Sort each row
a[a[:,0].argsort(),] Sort rows (by first row)
order(a) 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

R/S-Plus Python Description
apply(a,2,max) a.max(0) or amax(a [,axis=0]) max in each column
apply(a,1,max) a.max(1) or amax(a, axis=1) max in each row
max(a) a.max() or max in array
i <- apply(a,1,which.max) return indices, i
pmax(b,c) maximum(b,c) pairwise max
apply(a,2,cummax)
a.ptp(); a.ptp(0) max-to-min range

Matrix manipulation

R/S-Plus Python Description
a[,4:1] fliplr(a) or a[:,::-1] Flip left-right
a[3:1,] flipud(a) or a[::-1,] Flip up-down
rot90(a) Rotate 90 degrees
kronecker(matrix(1,2,3),a) kron(ones((2,3)),a) Repeat matrix: [ a a a ; a a a ]
a[lower.tri(a)] <- 0 triu(a) Triangular, upper
a[upper.tri(a)] <- 0 tril(a) Triangular, lower

Equivalents to "size"

R/S-Plus Python Description
dim(a) a.shape or a.getshape() Matrix dimensions
ncol(a) a.shape[1] or size(a, axis=1) Number of columns
prod(dim(a)) a.size or size(a[, axis=None]) Number of elements
a.ndim Number of dimensions
object.size(a) a.nbytes Number of bytes used in memory

Matrix- and elementwise- multiplication

R/S-Plus Python Description
a * b a * b or multiply(a,b) Elementwise operations
a %*% b matrixmultiply(a,b) Matrix product (dot product)
inner(a,b) or Inner matrix vector multiplication acdotb′a\cdot b'acdotb
outer(a,b) or a %o% b outer(a,b) or Outer product
crossprod(a,b) or t(a) %*% b Cross product
kronecker(a,b) kron(a,b) Kronecker product
solve(a,b) linalg.solve(a,b) Left matrix division, b−1cdotab^{-1}{\cdot}ab1cdota \newline (solve linear equations)
vdot(a,b) Vector dot product
cross(a,b) Cross product

Find; conditional indexing

R/S-Plus Python Description
which(a != 0) a.ravel().nonzero() Non-zero elements, indices
which(a != 0, arr.ind=T) (i,j) = a.nonzero()(i,j) = where(a!=0) Non-zero elements, array indices
ij <- which(a != 0, arr.ind=T); v <- a[ij] v = a.compress((a!=0).flat)v = extract(a!=0,a) Vector of non-zero values
which(a>5.5) (a>5.5).nonzero() Condition, indices
ij <- which(a>5.5, arr.ind=T); v <- a[ij] 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

Plotting

Basic x-y plots

R/S-Plus Python Description
plot(a, type="l") plot(a) 1d line plot
plot(x[,1],x[,2]) plot(x[:,0],x[:,1],'o') 2d scatter plot
plot(x1,y1,'bo', x2,y2,'go') Two graphs in one plot
plot(x1,y1)matplot(x2,y2,add=T) plot(x1,y1,'o')plot(x2,y2,'o')show() # as normal Overplotting: Add new plots to current
subplot(211) subplots
plot(x,y,type="b",col="red") plot(x,y,'ro-') Plotting symbols and color

Axes and titles

R/S-Plus Python Description
grid() grid() Turn on grid lines
plot(c(1:10,10:1), asp=1) figure(figsize=(6,6)) 1:1 aspect ratio
plot(x,y, xlim=c(0,10), ylim=c(0,5)) axis([ 0, 10, 0, 5 ]) Set axes manually
plot(1:10, main="title", xlab="x-axis", ylab="y-axis") Axis labels and titles
text(2,25,'hello') Insert text

Log plots

R/S-Plus Python Description
plot(x,y, log="y") semilogy(a) logarithmic y-axis
plot(x,y, log="x") semilogx(a) logarithmic x-axis
plot(x,y, log="xy") loglog(a) logarithmic x and y axes

Filled plots and bar plots

R/S-Plus Python Description
plot(t,s, type="n", xlab="", ylab="")polygon(t,s, col="lightblue")polygon(t,c, col="lightgreen") fill(t,s,'b', t,c,'g', alpha=0.2) Filled plot
stem(x[,3]) Stem-and-Leaf plot

Functions

R/S-Plus Python Description
f <- function(x) sin(x/3) - cos(x/5) Defining functions
plot(f, xlim=c(0,40), type='p') x = arrayrange(0,40,.5)y = sin(x/3) - cos(x/5)plot(x,y, 'o') Plot a function for given range

Polar plots

R/S-Plus Python Description
theta = arange(0,2*pi,0.001)r = sin(2*theta)
polar(theta, rho)

Histogram plots

R/S-Plus Python Description
hist(rnorm(1000))
hist(rnorm(1000), breaks= -4:4)
hist(rnorm(1000), breaks=c(seq(-5,0,0.25), seq(0.5,5,0.5)), freq=F)
plot(apply(a,1,sort),type="l")

3d data

Contour and image plots

R/S-Plus 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
filled.contour(x,y,z, nlevels=7, color=gray.colors) contourf(Z, V, cmap=cm.gray, origin='lower', extent=(-3,3,-3,3)) Filled contour plot
image(z, col=gray.colors(256)) im = imshow(Z, interpolation='bilinear', origin='lower', extent=(-3,3,-3,3)) Plot image data
# imshow() and contour() as above Image with contours
quiver() Direction field vectors

Perspective plots of surfaces over the x-y plane

R/S-Plus Python Description
f <- function(x,y) x*exp(-x^2-y^2)n <- seq(-2,2, length=40)z <- outer(n,n,f) n=arrayrange(-2,2,.1)[x,y] = meshgrid(n,n)z = x*power(math.e,-x**2-y**2)
persp(x,y,z, theta=30, phi=30, expand=0.6, ticktype='detailed') Mesh plot
persp(x,y,z, theta=30, phi=30, expand=0.6, col='lightblue', shade=0.75, ltheta=120, ticktype='detailed') Surface plot

Scatter (cloud) plots

R/S-Plus Python Description
cloud(z~x*y) 3d scatter plot

Save plot to a graphics file

R/S-Plus Python Description
postscript(file="foo.eps")plot(1:10)dev.off() savefig('foo.eps') PostScript
pdf(file='foo.pdf') savefig('foo.pdf') PDF
devSVG(file='foo.svg') savefig('foo.svg') SVG (vector graphics for www)
png(filename = "Rplot%03d.png" savefig('foo.png') PNG (raster graphics)

Data analysis

Set membership operators

R/S-Plus Python Description
a <- c(1,2,2,5,2)b <- c(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
setdiff(union(a,b),intersect(a,b)) setxor1d(a,b)a.symmetric_difference(b) Set exclusion
is.element(2,a) or 2 %in% a 2 in asetmember1d(2,a)contains(a,2) True for set member

Statistics

R/S-Plus Python Description
apply(a,2,mean) a.mean(axis=0)mean(a [,axis=0]) Average
apply(a,2,median) median(a) or median(a [,axis=0]) Median
apply(a,2,sd) a.std(axis=0) or std(a [,axis=0]) Standard deviation
apply(a,2,var) a.var(axis=0) or var(a) Variance
cor(x,y) correlate(x,y) or corrcoef(x,y) Correlation coefficient
cov(x,y) cov(x,y) Covariance

Interpolation and regression

R/S-Plus Python Description
z <- lm(y~x)plot(x,y)abline(z) (a,b) = polyfit(x,y,1)plot(x,y,'o', x,a*x+b,'-') Straight line fit
solve(a,b) linalg.lstsq(x,y) Linear least squares y=ax+by = ax + by=ax+b
polyfit(x,y,3) Polynomial fit

Non-linear methods

Polynomials, root finding

R/S-Plus Python Description
poly() Polynomial
polyroot(c(1,-1,-1)) roots() Find zeros of polynomial
polyval(array([1,2,1,2]),arange(1,11)) Evaluate polynomial

Differential equations

R/S-Plus Python Description
diff(x, n=1, axis=0) Discrete difference function and approximate derivative

Fourier analysis

R/S-Plus Python Description
fft(a) fft(a) or Fast fourier transform
fft(a, inverse=TRUE) ifft(a) or Inverse fourier transform
convolve(x,y) Linear convolution

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.