有没有办法在 numba 中将 timedelta64 转换为 int64?

3
例如,我有一段代码:
import numpy as np
from numba import njit

d = np.array(['2001-01-01T12:00', '2002-02-03T13:56:03.172'],
              dtype='datetime64')

@njit
def datetime_operand(date):
    x = date[1] - date[0]
    return x


datetime_operand(d) // the result is numpy.timedelta64(34394163172,'ms')

简单的选项如np.int64(x)并不起作用。


你尝试在末尾添加.astype(int)了吗? - john taylor
是的,首先。不幸的是,numba不允许在njit模式下使用.astype和类似的操作。 - Anton Philippoff
你想要什么结果? - juanpa.arrivillaga
2个回答

0

我不确定你要寻找的结果,但我想pandas可以在这里提供帮助:

import pandas
@njit
def datetime_operand(date):
    df = pandas.DataFrame(d.T)
    df[0]=pd.to_datetime(df[0])
    return (df[0].iloc[1]-df[0].iloc[0]).to_numpy()

结果是这样的:

datetime_operand(d)
umpy.timedelta64(34394163172,'ms')

很遗憾,在 njit 模式下无法使用 pandas。 - Anton Philippoff

0

实际上,答案是:

import numpy as np
dt64 = np.datetime64('2009-01-01')
print((dt64 — np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's'))

1
那么,与numba有什么关系? - FObersteiner

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