web-dev-qa-db-ja.com

numpyで循環シフトを行う方法

例えば、私は派手な配列を持っています

a = np.arange(10)

最初のn要素を配列の最後に移動するにはどうすればよいですか?

私はこれを見つけました roll 関数ですが、それは逆のことをするだけのようで、最後のn要素を最初にシフトします。

15
LWZ

負の数のrollだけではないのですか?

>>> 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])
38
mgilson

負のシフトを使用できます

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

戻り値

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

8