У меня есть данные времени с нерегулярными интервалами, и мне нужно преобразовать их в разреженную матрицу для использования с графической библиотекой.Эффективные алгоритмы слияния хэшей в разреженной матрице
Данные в настоящее время в следующем формате:
{
:series1 => [entry, entry, entry, entry, ...],
:series2 => [entry, entry, entry, entry, ...]
}
, где entry
представляет собой объект с двумя свойствами, timestamp
(а Отметка времени Unix) и value
(целое число) мне нужно положить его в этом формате как можно ближе к O (n) времени.
{
timestamp1 => [ value, value, nil ],
timestamp2 => [ value, nil, value ],
timestamp3 => [ value, value, value],
...
}
Здесь каждая строка представляет собой момент времени, в который у меня есть запись. Каждый столбец представляет собой серию (строка на линейном графике). Вот почему очень важно представлять недостающие значения с помощью nil.
У меня есть довольно медленные реализации, но это похоже на проблему, которая была решена раньше, поэтому я надеюсь, что есть более эффективный способ сделать это.
Должны ли временные метки в вашем выходе быть в порядке? –
@NickBarnes да, мне нужно их в порядке, но я могу просто отсортировать их после их объединения. –
Любой вид будет взорвать ваше требование O (n). Но если предположить, что это не проблема, мне сложно представить, как вы создадите несортированную версию медленнее, чем O (n) ... Не могли бы вы дать некоторое представление о том, как выглядит ваше текущее решение, поэтому мы знаем, что мы стремимся бить? –