将NumPy字符串数组转换为日期时间格式

5

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

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类型。

更准确地说,我想改变数组的数据类型,而不必通过for循环遍历并逐个复制到新数组中(实际数组非常大)。虽然有些幼稚,但我认为以下方法可能有效:

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

剧透:不行。打印数组的数据类型会得到与之前相同的输出(即|S10)。

有没有一种内存高效的方式可以将现有数组的数据类型进行转换,而无需将所有内容都复制到新数组中?

1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接