从numpy.ndarray of timedelta对象获取days属性

时间:2012-09-13 11:54:47

标签: datetime casting numpy python-2.7 timedelta

我有numpy.ndarray。前两列是datetime.datetime类型的日期。我想找到两者之间的差异(作为一个浮点数)我将其定义为(天数差异)*(12/365)。所以我想通过减去两个日期时间来访问返回的timedelta对象的.days属性。

我不能这样做:(MyArray[1] - MyArray[0]).days因为Python不知道期望timedelta对象。在C#中,我可能会尝试像这样投射:

((timedelta)(MyArray[1] - MyArray[0])).days

在Python(numpy)中执行此操作的方法是什么?我需要循环吗?

1 个答案:

答案 0 :(得分:2)

不幸的是,如果没有迭代timedelta

的数组,那就不可行了
deltas = MyArray[1]-MyArray[0]
diff_days = np.fromiter((d.days for d in deltas), dtype=float, count=len(deltas))

在这里,我们使用np.fromiter count参数来提高效率(它预先分配数组的大小)。

请注意,在此日期(2012/09),新的datetime64 dtype 允许您获取days等属性。