Преобразование массива строк в дату и время - PullRequest
0 голосов
/ 04 октября 2018

У меня есть массив строк, например

import numpy as np
foo = np.array( [b'2014-04-05', b'2014-04-06', b'2014-04-07'] )

Чтобы проверить тип данных массива, я печатаю его с помощью

print( foo.dtype )

, что приводит к |S10.Очевидно, он состоит из строк длиной 10. Я хочу преобразовать его в тип numpy datetime64.

Точнее, я хочу изменить тип данных массива, не проходя черезцикл и копирование его поэлементно в новый массив (реальный массив на самом деле очень большой).Наивный, как я, я думал, что следующее может работать

[ np.datetime64(x) for x in foo ]

Спойлер: это не так.Печать типа данных массива приводит к тому же выводу, что и раньше (то есть |S10).

Есть ли какой-нибудь эффективный для памяти способ преобразовать тип данных существующего массива без необходимости копировать все в новый массив?

1 Ответ

0 голосов
/ 04 октября 2018

Используйте .astype, с copy=False, чтобы избежать создания копии:

foo = np.array( [b'2014-04-05', b'2014-04-06', b'2014-04-07'] )

foo = foo.astype('datetime64',copy=False)

>>> foo
array(['2014-04-05', '2014-04-06', '2014-04-07'], dtype='datetime64[D]')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...