On Fri, Jun 6, 2008 at 10:46 PM, Anne Archibald
<[EMAIL PROTECTED]> wrote:
> 2008/6/6 Keith Goodman <[EMAIL PROTECTED]>:
>> I'd like to shift the columns of a 2d array one column to the right.
>> Is there a way to do that without making a copy?
>>
>> This doesn't work:
>>
>>>> import numpy as np
>>>> x = np.random.rand(2,3)
>>>> x[:,1:] = x[:,:-1]
>>>> x
>>
>> array([[ 0.44789223,  0.44789223,  0.44789223],
>>       [ 0.80600897,  0.80600897,  0.80600897]])
>
> As a workaround you can use backwards slices:
>worki
> In [40]: x = np.random.rand(2,3)
>
> In [41]: x[:,:0:-1] = x[:,-2::-1]
>
> In [42]: x
> Out[42]:
> array([[ 0.20183084,  0.20183084,  0.08156887],
>       [ 0.30611585,  0.30611585,  0.79001577]])

Neat. It makes sense to go backwards. Thank you.

> Less painful for numpy developers but more painful for users is to
> warn them about the status quo: operations on overlapping slices can
> happen in arbitrary order.

Now I'm confused. Could some corner case of memory layout cause numpy
to work from right to left, breaking the workaround? Or can I depend
on the workaround working with numpy 1.0.4?
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to