有没有办法使用numpy切片进行循环置换?

时间:2011-12-15 22:10:58

标签: arrays numpy slice

所以我想知道是否有一些切片可以让我做一个数组的循环排列。基本上我想知道的是否有整数i,j,k这样:

> x = np.arange(10)
> print x[i:j:k]  
      [9,0,1,2,3,4,5,6,7,8]

> x = np.arange(10)
> print x[i:j:k]  
      [1,2,3,4,5,6,7,8,9,0]

我认为自然语法是:

import numpy as np

x = np.arange(10)
print x[-1:0]

但是返回一个空数组(它有点意义......)。还尝试了其他切片组合,没有任何效果。我可以用其他方式做到这一点,但这会很简洁......:P

感谢。

2 个答案:

答案 0 :(得分:3)

您可以使用numpy.roll()或一些步幅,但除此之外我很确定答案是否定的,没有3个整数切片可以返回您想要的内容。

答案 1 :(得分:2)

我认为这是不可能的,因为要做你要求的,numpy需要制作数组的副本并且切片创建视图而不是副本。正如本杰明已经提到的,请查看numpy.roll