首页 > 解决方案 > 乘法和反转 NP 类型“m8[ns]”

问题描述

我得到了一个函数,它接受 np.int64ts并将其转换为 datetime 对象: ts.astype('m8[ns]') * 100 + np.datetime64('0001-01-01T00:00:00')

我想要做的是创建一个反转这个过程的函数——>接受一个日期时间对象并返回np.int64。

让我绊倒的是* 100原始功能的一部分,它实际上在做什么?因为它不能正常乘以 100,如果在相反的步骤中我们尝试除以 100,它会给出与原始答案不同的答案。

例子:

ts = np.int64(636903684001437312)

ts.astype('m8[ns]') ==> numpy.timedelta64(636903684001437312,'ns')

ts.astype('m8[ns]')*100 ==> numpy.timedelta64(8350136179015076352,'ns')

numpy.timedelta64(8350136179015076352,'ns')/100 ==> numpy.timedelta64(83501361790150763,'ns')

正如我们看到的原始ts.astype('m8[ns]')给定636903684001437312,乘以 100 将其变成一个8350136179015076352timedelta64 对象(为什么/如何?)但将其除以 100 并不会返回原始值,而是这一次它实际上将它除以 100 来给出83501361790150763

标签: pythonnumpydatetimetimedelta

解决方案


推荐阅读