2011-12-15 86 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

相關問題