繁体   English   中英

转换 unix 时间戳的 np.array (dtype ' <u21') to np.datetime64< div><div id="text_translate"><p> 我正在寻找处理大量数据,因此我对计算以下内容的最快方法感兴趣:</p><p> 我将以下 np.array 作为 np.ndarray 的一部分,我想将其从“&lt;U21”转换为“np.datetime64”(毫秒)。</p><p> 当我在一个条目上执行以下代码时,它可以工作:</p><pre> tmp_array[:,0][0].astype(int).astype('datetime64[ms]')</pre><p> 结果:numpy.datetime64('2019-10-09T22:54:00.000')</p><p> 当我像这样在子数组上执行相同的操作时:</p><pre> tmp_array[:,0] = tmp_array[:,0].astype(int).astype('datetime64[ms]')</pre><p> 我总是收到以下错误:</p><pre> RuntimeError: The string provided for NumPy ISO datetime formatting was too short, with length 21</pre><p> numpy 版本 1.22.4</p><pre> array(['1570661640000', '1570661700000', '1570661760000'],dtype='&lt;U21')</pre></div></u21')>

[英]Converting np.array of unix timestamps (dtype '<U21') to np.datetime64

我正在寻找处理大量数据,因此我对计算以下内容的最快方法感兴趣:

我将以下 np.array 作为 np.ndarray 的一部分,我想将其从“<U21”转换为“np.datetime64”(毫秒)。

当我在一个条目上执行以下代码时,它可以工作:

tmp_array[:,0][0].astype(int).astype('datetime64[ms]')

结果:numpy.datetime64('2019-10-09T22:54:00.000')

当我像这样在子数组上执行相同的操作时:

tmp_array[:,0] = tmp_array[:,0].astype(int).astype('datetime64[ms]')

我总是收到以下错误:

RuntimeError: The string provided for NumPy ISO datetime formatting was too short, with length 21

numpy 版本 1.22.4

array(['1570661640000', '1570661700000', '1570661760000'],dtype='<U21')

我确信有一种方法可以使用 numpy 的强大功能来更有效地执行此操作,但这种方法有效:给定您的 tmp_array 形式:

array(['1570661640000', '1570661700000', '1570661760000'], dtype='<U21')  

将 unix 基准日期表示为:

db = np.datetime64('1970-01-01')  

然后通过以下方式创建所需的日期时间数组:

cnvrt_array = np.array([db + np.timedelta64(int(x), 'ms') for x in tmp_array])  

这产生了数组:

array(['2019-10-09T22:54:00.000', '2019-10-09T22:55:00.000',
       '2019-10-09T22:56:00.000'], dtype='datetime64[ms]')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM