2011-12-15 114 views
0

所以我想知道是否有一些技巧与切片,这将允许我做一个数组的循环排列。基本上我想知道是否有整数什么i,j,k这样的:有没有办法使用numpy切片做循环置换?

> 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

谢谢。

+1

我不明白。 `x [i:j:k] == x [i:j:k]`。 – 2011-12-16 00:31:11

+0

他正在寻找一种切片方法来完成numpy.roll在两个方向上所做的事情。 – Benjamin 2011-12-16 01:11:26

回答

3

您可以使用numpy.roll()或一些步幅技巧,但除此之外,我敢肯定答案是否定的,没有3个整数的片会返回你想要的。

2

我相信这是不可能的,因为要做你所要求的事情,numpy需要制作一个数组的副本,然后切片创建一个不是副本的视图。正如本杰明已经提到的,检查出numpy.roll

相关问题