How do you reverse the elements in a sequence or
along one dimensions in an array
(like the reverse function
in IDL)?
If the sequence is a list, just use the reverse method:
>>> a = [1, 2, -6, 4, -8]
>>> a.reverse()
>>> a
[-8, 4, -6, 2, 1]
Tuples, of course, are immutable, so they can't be reversed in place like lists.
For a Numeric array,
there isn't a reverse method.
Instead you do this through extended indices:
>>> a = Numeric.array([1, 2, -6, 4, -8])
>>> a = a[::-1]
>>> a
array([-8, 4, -6, 2, 1])
For a 2-D array:
>>> a = Numeric.array([[1, 2, -6, 4, -8], [-2, 3, 7, 9, -1]])
array([[ 1, 2, -6, 4, -8],
[-2, 3, 7, 9, -1]])
>>> b = a[:,::-1]
>>> b
array([[-8, 4, -6, 2, 1],
[-1, 9, 7, 3, -2]])
>>> c = a[::-1,:]
>>> c
array([[-2, 3, 7, 9, -1],
[ 1, 2, -6, 4, -8]])
The syntax of extended indexing is start:stop:stride.
When the start and stop values are left
out, the interpreter automatically specifies the entire sequence.
A stride of -1 decrements element index by 1.
Remember in Python sequence indexing the start index
is included while the stop index is excluded.
Extended array indexing is supported on lists and
tuples starting with Python 2.3.
Martelli (2003) gives a comprehensive and concise discussion of sequence slicing (pp. 47, 207-308).