Предположим, что a = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6]
и s = [3, 3, 9, 3, 6, 3]
. Я ищу лучший способ повторить a[i]
ровно s[i]
раз, а затем иметь сплющенный массив в виде b = [0.1, 0.1, 0.1, 0.2, 0.2, 0.2, 0.3, 0.3, 0.3, 0.3, ... ]
.Повторите все значения массива в разное время
Я хочу сделать это как можно быстрее, так как я должен это делать много раз. Я использую Python и numpy, а массивы определяются как numpy.ndarray. Я искал вокруг и узнал о repeat
, tile
и column_stack
, которые могут быть использованы красиво, чтобы повторять каждый элемент n
раз, но я хотел повторять каждый из них разное время.
Один из способов сделать это:
a = hsplit(a, 6)
for i in range(len(a)):
a[i] = repeat(a[i], s[i])
a = a.flatten()
мне интересно, если есть лучший способ сделать это.
является вашей функцией повтора 'np.repeat?' – Kasramvd
@ Kasra Да, это так. Я не знал, что он также принимает список для повтора. – Amir
, поэтому вы должны написать 'np.repeat' !!! будьте осторожны с вашими валидационными вопросами и ясными !!! – Kasramvd