Восстановление выборки из частот — это обратная операция к построению частотного массива: по значениям и числу их появлений снова формируется явная выборка. В NumPy это делается векторизованно, без циклов.
Базовая идея:
– есть массив частот counts
– индекс массива = значение
– нужно повторить каждое значение столько раз, сколько указано в частоте
Минимальный пример:
import numpy as np
counts = np.array([1, 2, 3])
values = np.arange(len(counts))
data = np.repeat(values, counts)Результат:
[0, 1, 1, 2, 2, 2]
Это ровно та выборка, для которой:
np.bincount(data) == countsЕсли значения не начинаются с нуля:
values = np.array([10, 11, 12])
counts = np.array([2, 1, 3])
data = np.repeat(values, counts)Результат:
[10, 10, 11, 12, 12, 12]
Типичный пайплайн:
data → np.bincount → counts
counts → np.repeat → dataКогда это используют:
– для проверки корректности частотных преобразований
– для генерации дискретных выборок по заданному распределению
– для визуализации (гистограммы, эмпирические распределения)
Ограничения и нюансы:
– порядок восстановленных данных не совпадает с исходным
– восстановленная выборка эквивалентна только по распределению
– для больших частот может потребовать много памяти
Коротко:
восстановление выборки из частот в NumPy выполняется через np.repeat, повторяя каждое значение столько раз, сколько указано в его частоте, что даёт выборку, эквивалентную по распределению.