获取排序日期时间数组的类型数组



我有一个很长的datetime数组,它已经排序。

是否有可能得到另一个由0,1,2,3组成的数组....,根据datetime值?

下面是一个例子:

import pandas as pd
import numpy as np
t = np.array(pd.to_datetime(['2021-02-01 00:00', '2021-02-01 00:00',
'2021-02-01 00:10',
'2021-02-01 00:20', '2021-02-01 00:20']))

我想得到下面基于t的数组:

array([0, 0, 1, 2, 2])

前两个元素相同,所以赋值为0。然后,下一个是唯一的,1被分配。后两个相同,2是指定的。下一个值应该是3,4,5....

使用categorical:

In [1410]: y = pd.Series(t).astype('category').cat.codes.to_numpy()
In [1411]: y
Out[1411]: array([0, 0, 1, 2, 2], dtype=int8)

或者:

使用np.uniquereturn_inverse=True直接将numpy array转换为integer codes:

In [1421]: y = np.unique(t, return_inverse=True)[1]
In [1422]: y
Out[1422]: array([0, 0, 1, 2, 2])

相关内容

  • 没有找到相关文章

最新更新