Vectorization via slicing

Consider a recursion scheme like \] (which arises from a one-dimensional diffusion equation)
Straightforward (slow) Python implementation:
n = size(u)-1
for i in xrange(1,n,1):
    u_new[i] = beta*u[i-1] + (1-2*beta)*u[i] + beta*u[i+1]
Slices enable us to vectorize the expression:
u[1:n] = beta*u[0:n-1] + (1-2*beta)*u[1:n] + beta*u[2:n+1]
Speed-up: factor 10--150 (150 for 3D arrays)

previousnexttable of contents