将字符串的numpy数组转换为日期时间

时间:2018-10-04 20:23:04

标签: python arrays numpy

例如,我有一个字符串数组

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的{​​{1}}类型。

更准确地说,我想更改数组的数据类型而不循环遍历for循环并将其逐元素复制到新数组中(实际数组实际上非常大)。我天真,我认为以下方法可能有效

datetime64

剧透:没有。打印数组的数据类型将得到与以前相同的输出(即[ np.datetime64(x) for x in foo ] )。

是否有任何有效的内存有效方法来转换现有数组的数据类型,而无需复制到新数组中?

1 个答案:

答案 0 :(得分:3)

使用.astypecopy=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]')