Выписать из случайной выборки - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть 30 n случайной выборки из списка, который я записываю в файл.

Я бы предпочел пометить строки, которые пошли в образец, написав в конце "in_sample" или "not_in_sample".

Теперь это выглядит так:

mysample=random.sample(list, 30)
for i in mysample:
    out.write("%s\n" % (i))

Я только выписываю строки из примера, но я бы хотел, чтобы файл выглядел так:

line 1 in_sample

line 2 not_in_sample

line 3 in_sample

line 4 not_in_sample

Файл выглядел прежним, но без последнего столбца.

Я ясно?

Ответы [ 4 ]

1 голос
/ 28 февраля 2012

Один из способов сделать это - выборка в индексах вашего списка вместо содержимого.

Например, если ваш список называется lst:

indexes_samples = sorted(random.sample(range(len(lst)), 30))

for i in indexes_samples:
    lst[i]  # do what you want

Или, может быть, я думаю, вы захотите сделать что-то вроде:

idx = sorted(random.sample(range(len(lst)), 30))

j = 0
for i,num in enumerate(lst):
    if j <= len(idx) and i == idx[j]:
        msg = 'line {} in sample'
        j += 1
    else:
        msg = 'line {} not in sample'

    print(msg.format(num))   # out.write() or whatever
1 голос
/ 28 февраля 2012
my_sample = set(random.sample(my_list, 30))
for i, item in enumerate(my_list, 1):
    out.write('line {0} {1}\n'.format(i, ('not_in_sample', 'in_sample')[item in my_sample]))
1 голос
/ 28 февраля 2012
mysample=random.sample(list, 30)
for i in range(1:31)
    if i in mysample:
        out.write("line %s\n in_sample" % (i))
    else:
        out.write("line %s\n not_in_sample" % (i))
0 голосов
/ 28 февраля 2012

Поместите ваши выборки в набор, итерируйте от 1 до максимального значения совокупности и используйте тестирование локализации, чтобы увидеть, есть ли текущая итерация в наборе.

...