【NumPy】リストの要素の順番をずらす:roll[Python]

  • URLをコピーしました!
目次

numpy

前回、numpyのリストに要素を追加する「append」を紹介しました。

今回はnumpyでリストの要素の順番をずらす「roll」という関数を紹介します。

これは何かのプログラムで使った訳ではなく、どこかで紹介されていて、どんな関数なのかなと思っていじってみたのが今回の発端です。

ということで今回使うリストを作成します。

import numpy as np

val_list = np.array(range(10))

print(val_list)

実行結果
[0 1 2 3 4 5 6 7 8 9]

「roll」はnumpyの関数なので、今回のリストはnumpyのリストで作成してあります。

それでは始めていきましょう。

使い方

「roll」を使うには「np.roll(リスト, ずらす個数)」です。

import numpy as np

val_list = np.array(range(10))

roll_1 = np.roll(val_list, 1)

print(roll_1)

実行結果
[9 0 1 2 3 4 5 6 7 8]

ずれる方向は右(インデックスが大きい方向)にずれ、端の要素は前に戻ってきます。

ちなみに元のリストが変更された訳ではなく、新しいリストとして作成されているようで、元のリストはそのままで再度取得することが可能です。

ということで3つずらして、ずらす前後のリストを見てみました。

import numpy as np

val_list = np.array(range(10))

roll_3 = np.roll(val_list, 3)

print(roll_3)
print(val_list)

実行結果
[7 8 9 0 1 2 3 4 5 6]
[0 1 2 3 4 5 6 7 8 9]

またリストの要素数よりも大きな値を指定することも可能で、その場合は単純に指定した数だけずれ続けます。

import numpy as np

val_list = np.array(range(10))

roll_15 = np.roll(val_list, 15)

print(roll_15)

実行結果
[5 6 7 8 9 0 1 2 3 4]

逆向きにずらす場合は値を「-(マイナス)」にするだけです。

import numpy as np

val_list = np.array(range(10))

roll_3_rev = np.roll(val_list, -3)

print(roll_3_rev)

実行結果
[3 4 5 6 7 8 9 0 1 2]

なかなか面白い関数ですが、どこで使うんだろうなぁと思いつつ、いじっていました。

とりあえず頭の片隅に入れておいて、活躍の場を待ちたいと思います。

次回は並列処理の「concurrent.futures」で返り値を取得する方法を紹介します。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次