Sponsored Link

(36) 配列データをシャッフル

(36) 配列データをシャッフル

この記事は最終更新から 480日 が経過しています。

random.shuffle を使用すると、配列要素をシャッフルできる。

>>> import random
>>>
>>> a = range(10)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
>>> random.shuffle(a)
>>> a
[6, 9, 1, 4, 5, 0, 2, 8, 7, 3]

文字列配列でもOK!

>>> b = ['aaa','BBB','ccc','dDd','eEE']
>>> b
['aaa', 'BBB', 'ccc', 'dDd', 'eEE']
>>>
>>> random.shuffle(b)
>>> b
['BBB', 'aaa', 'dDd', 'ccc', 'eEE']

numpy配列の場合は numpay.random.shuffle で同じことができる。

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

応用

ファイル検索で得られたファイルリストをシャッフルする。

以下のようなテキストファイルが置かれたディレクトリに対してファイル検索する。

[user@linux]$ ll ./sub/
合計 28
-rw-rw-r--. 1 user user 35  7月 10 23:35 2014 text001.txt
-rw-rw-r--. 1 user user 35  7月 10 23:35 2014 text002.txt
-rw-rw-r--. 1 user user 35  7月 10 23:35 2014 text003.txt
-rw-rw-r--. 1 user user 35  7月 10 23:35 2014 text004.txt
-rw-rw-r--. 1 user user 35  7月 10 23:35 2014 text005.txt
-rw-rw-r--. 1 user user 35  7月 10 23:35 2014 text006.txt
-rw-rw-r--. 1 user user 35  7月 10 23:35 2014 text007.txt

glob を使ってファイルリストを取得し、これをシャッフルしてみる。

>>> import glob
>>> files = glob.glob('./sub/*.txt')
>>> files
['./sub/text002.txt', './sub/text005.txt', './sub/text006.txt',
 './sub/text003.txt', './sub/text001.txt', './sub/text004.txt',
 './sub/text007.txt']
>>>
>>> import random
>>> random.shuffle(files)
>>> files
['./sub/text005.txt', './sub/text002.txt', './sub/text004.txt',
 './sub/text003.txt', './sub/text001.txt', './sub/text006.txt',
 './sub/text007.txt']
Sponsored Link

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*