2013-04-03 10 views
11

dairesel bir kayma, mu?nasıl <pre><code>a = np.arange(10) </code></pre> <p></p> nasıl dizinin sonuna ilk <code>n</code> elemanlarını hareket ettirdiği örneğin bir numpy dizi var Numpy

Bu roll işlevini buldum, ancak yalnızca son n öğelerini en başa çeviren tersi gibi görünüyor.

+2

Tam olarak ne istediğini döndürmek değil mi? İlk 'n' elemanlarını sonuna taşımak yerine, son 'a (a) -n' elemanlarını en başa hareket ettirin mi? –

+0

Ne bulduğunuza ve ne bulduğunuza dair bazı verileri gönderin. – BlackVegetable

cevap

30

Neden sadece roll negatif bir numara ile değil?

>>> import numpy as np 
>>> a = np.arange(10) 
>>> np.roll(a,2) 
array([8, 9, 0, 1, 2, 3, 4, 5, 6, 7]) 
>>> np.roll(a,-2) 
array([2, 3, 4, 5, 6, 7, 8, 9, 0, 1]) 
6

negatif kayma kullanmak

a = np.arange(10) 
print(np.roll(a, 3)) 
print(np.roll(a, -3)) 

döner olabilir

[7, 8, 9, 0, 1, 2, 3, 4, 5, 6]
[ 3, 4, 5, 6, 7, 8, 9, 0, 1, 2]

+0

bir dakika geç :) – entropiece

+0

bile bundan daha az :( –

+0

Bana söyler misiniz, neden circshift (göz (m), 2) ve numpy.roll (numpy.eye (m), -2)) farklı sonuç verir? – user3515225

İlgili konular