Shifting numpy array contents
Heiko
h.stegmann at arcor.de
Fri Mar 7 10:08:03 EST 2003
John,
I have to admit that my post was really quite imprecise. You'll see
what I mean below - meanwhile, I have found a solution that does what
I want, and it's beautifully simple:
Consider, e.g.,
a = array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
I want to, for example, shift the 2nd row one cell to the right (with
wrapping around at the ends):
a[1]=concatenate((a[1,-1:],a[1,:-1]))
[[ 1 2 3]
[ 6 4 5]
[ 7 8 9]
[10 11 12]]
now last the row two to the left:
a[3]=concatenate((a[3,2:],a[3,:2]))
[[ 1 2 3]
[ 6 4 5]
[ 7 8 9]
[12 10 11]]
In general, to shift row i by j cells (left for j>0 and right for
j<0):
a[i]=concatenate((a[i,j:],a[i,:j]))
More information about the Python-list
mailing list