转换numpy.ndarry.tolist时数据类型丢失?

问题描述 投票:1回答:1

所以我有一个ndarray与此示例类似:

dates = ['3/1/2020','4/15/2020','7/21/2020']
darray = np.asarray([dateutil.parser.parse(d) for d in dates], dtype='datetime64[ns]')

>>> array(['2020-03-01T00:00:00.000000000', '2020-04-15T00:00:00.000000000',
   '2020-07-21T00:00:00.000000000'], dtype='datetime64[ns]') 

darray.tolist()

>>> [1583020800000000000, 1586908800000000000, 1595289600000000000]

因此,我假设它自POSIX起源(1970-01-01)起转换为纳秒数。有没有办法避免这种数据类型的丢失?

python numpy datetime
1个回答
2
投票

这是您要寻找的吗?

>>> list(darray)
[numpy.datetime64('2020-03-01T00:00:00.000000000'),
 numpy.datetime64('2020-04-15T00:00:00.000000000'),
 numpy.datetime64('2020-07-21T00:00:00.000000000')]

不同之处在于np.ndarray.tolist()将值转换为Python类型,而list(...)则将对象保持原样。在内部,它们当然都包含64位整数。如果要转换为Python日期时间对象,请查看this question。不幸的是,它并不像它那样方便。

© www.soinside.com 2019 - 2024. All rights reserved.