Вы можете использовать numpy.random.choice
для создания массива содержащий несколько случайных выборов из другого массива.
В вашем случае вам нужны строки "x" из вашего data_table
. Вы не можете напрямую использовать choice
в таблице, но вы можете использовать len
своей таблицы для random.choice
:
import numpy as np
rows_numbers_to_keep = np.random.choice(len(data_table), 2, replace=False)
И затем проиндексируйте свою таблицу:
subsample = data_table[rows_numbers_to_keep]
Например (я использую astropy, потому что PyFITS больше не разрабатывается и был перенесен на astropy.io.fits
< /а>):
>>> data
FITS_rec([(1, 4, 7), (2, 5, 8), (3, 6, 9), (4, 7, 0)],
dtype=(numpy.record, [('a', 'S21'), ('b', 'S21'), ('c', 'S21')]))
>>> data[np.random.choice(len(data), 2, replace=False)] # keep 2 distinct rows
FITS_rec([(1, 4, 7), (4, 7, 0)],
dtype=(numpy.record, [('a', 'S21'), ('b', 'S21'), ('c', 'S21')]))
Если вы хотите разрешить получение одной и той же строки несколько раз, вы можете вместо этого использовать replace=True
.
person
MSeifert
schedule
27.09.2017
.field(fieldname)
— вы можете просто использовать синтаксис нижнего индекса, такой какdata_table[fieldname]
(где какdata_table[x]
, гдеx
— целое число, возвращает строку таблицы). Кроме того, в этом уникальном для pyfits нет ничего особенного — это просто прославленныйnumpy.recarray
- person Iguananaut   schedule 04.10.2017