У меня есть несколько списков данных в python:
a = [2,45,1,3]
b = [4,6,3,6,7,1,37,48,19]
c = [45,122]
total = [a,b,c]
Я хочу получить n
случайные индексы из них:
n = 7
# some code
result = [[1,3], [2,6,8], [0,1]] # or
result = [[0], [0,2,6,8], [0,1]] # or
result = [[0,1], [0,2,3,6,8], []] # or any other
Идея - это происходит случайным образом любые элементы (индексы этих элементов) из любых массивов, но общее их количество должно быть n
.
Так что моя идея - генерировать случайные индексы:
n = 7
total_len = sum([len(el) for el in total])
inds = random.sample(range(total_length), n))
Но как тогда получить такие показатели? Я думаю о np.cumsum()
и смещении индексов после этого, но не могу найти элегантного решения ...
PS На самом деле мне нужно использовать его для загрузки данных из нескольких файлов csv
с помощью skiprow
вариант. Поэтому моя идея - получить индексы для каждого файла, и это позволяет мне загружать только необходимые строки из каждого файла. Итак, моя настоящая задача: у меня есть несколько CSV-файлов разной длины, и мне нужно получить n
случайных строк из них. Моя идея:
lengths = my_func_to_get_lengths_for_every_csv(paths) # list of lengths
# generate random subsamle of indexes
skip = ...
for ind, fil in enumerate(files):
pd.read_csv(fil, skiprows=skip[ind])