从数组中选择随机项

时间:2014-05-04 08:16:08

标签: python

import os, glob, numpy as np

files = glob.glob('*.jpg')
indices = np.array([i for i,j in enumerate(files)])
selected_indices = np.random.choice(indices,500,replace=False)
print files[selected_indices]

我无法将索引转换为文件。这样做的好方法是什么?

2 个答案:

答案 0 :(得分:5)

以正确的方式做到这一点!

import glob
import random

files = glob.glob('*.jpg')
selected_files = random.sample(files, 500)
print(selected_files)

Sample larger than population时,这两种方法都有问题。因此,如果需要,我们可以使用500代替min(500, len(files))

答案 1 :(得分:2)

问题是glob.glob('*.jpg')返回一个列表而python不支持:

list[array_of_indices]

相反,请将其作为:

selected_indices = list(np.random.choice(indices,500,replace=False))
print [files[i] for i in selected_indices]

然而,有一种更多更好的方法。 请参阅@OlehPrypin's answer