Я работаю с данными временных рядов с разными частотами дискретизации.
Мне нужно точно растянуть набор 1d векторов различной длины в общую произвольную длину.Значения следует повторять, а не интерполировать.
Однако количество повторений должно быть округлено в большую или меньшую сторону по всей цели, чтобы достичь определенной длины цели.
Мне кажется, что я не могуиспользуйте np.repeat, поскольку он округляет дробные числа повторов, а конечная длина всегда является точным кратным повторений.
В основном я ищу функцию с примерно следующим поведением:
stretch_func(np.array([1,2,4]), length=11)
out: [1,1,1,2,2,2,2,4,4,4,4]
stretch_func(np.array(["A","B"]), length=11)
out: ["A","A","A","A","A","B","B","B","B","B","B"]
РЕДАКТИРОВАТЬ:
Похоже, эта функция не является стандартной в numpy или пандах.Я пошел дальше и реализовал это так, вот это для любого, кому это может понадобиться:
def stretch_func(arr, length=1):
repetitions = np.round(np.linspace(0,length,arr.shape[0]+1))[1:] - np.round(np.linspace(0,length,arr.shape[0]+1))[:-1]
repeated = np.repeat(arr, repetitions.astype(np.int))
return repeated