Как эффективно преобразовать смещение миллисекунд в np.datetime64 в ndarray np.void - PullRequest
0 голосов
/ 18 мая 2018

Хорошо, потерпите меня, я только начал использовать NumPy.

У меня есть временной ряд, разделенный на несколько файлов.Каждый файл захватывает данные за один день.Поле времени в каждой записи - это просто миллисекунды с начала этого дня

Теперь я пытаюсь прочитать эти данные, используя numpy, но у меня возникают проблемы с преобразованием миллисекунд в np.datetime64.

То, что у меня есть софар:

t_base = np.datetime64(<some_date>) 

dtype = np.dtype([
    ("t", "i4"),
    ...<other fields here>...
])
data = np.fromfile(filename, dtype)

Это дает мне одномерный ndarray из np.void.Пока все хорошо.

Что я пробовал:

for record in np.nditer(data, op_flags["readwrite"]):
    record["t"] = t_base + np.timedelta64(int(record["t"]), "ms")

К сожалению, это не меняет тип.Вместо этого он преобразует построенный datetime64 обратно в int32, что неверно, потому что int32 не имеет диапазона для захвата времени в миллисекундах.Итак, как мне сделать это эффективным способом?Очевидно, что после преобразования мне больше не нужно смещение в миллисекундах.

Или, альтернативно, есть ли способ с fromfile для чтения int32 в тип int64?Тогда я могу использовать int64 как метку времени вместо datetime64.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...