如何根据日期时间字段对 numpy.recarray 进行排序

How to sort numpy.recarray based on datetime field

我已经用 np.rec.fromarrays 和以下结构构建了一个 recarray :

dtype=np.dtype([('layers', 'U256'), ('hours', datetime.datetime), ('points', 'U256')]))

我得到一个这样的对象:

[('image1.jpg', datetime.datetime(1900, 1, 1, 21, 20), 'mypoints.points')
 ('image2.jpg', datetime.datetime(1900, 1, 1, 21, 15), 'mypoints.points')]

recarray 类型。我想根据包含 datetime 的第二列对我的 recarray 进行排序。我试过 numpy.recarray.sort 但它 returns 是一个 NoneType 对象。我是这样使用它的:

mytable.sort(order='hours')

我也试过将 kind='quicksort' 传递给函数,但不明白它的用处。

我试图重现你的数据

x1=np.array(['image1.jpg', 'image2.jpg'])
x2=np.array([datetime.datetime(1900, 1, 1, 21, 10), datetime.datetime(1900, 1, 1, 21, 9)])
x3=np.array(['mypoints.points', 'mypoints.points'])
    
array = np.rec.fromarrays([x1, x2, x3], dtype=np.dtype([('layers', 'U256'), ('hours', datetime.datetime), ('points', 'U256')]))

输出:

rec.array([('image1.jpg', datetime.datetime(1900, 1, 1, 21, 20), 'mypoints.points'),
           ('image2.jpg', datetime.datetime(1900, 1, 1, 21, 15), 'mypoints.points')],
          dtype=[('layers', '<U256'), ('hours', 'O'), ('points', '<U256')])

但无法得到相同的错误...array.sort(order='hours') 工作正常

rec.array([('image2.jpg', datetime.datetime(1900, 1, 1, 21, 15), 'mypoints.points'),
           ('image1.jpg', datetime.datetime(1900, 1, 1, 21, 20), 'mypoints.points')],
          dtype=[('layers', '<U256'), ('hours', 'O'), ('points', '<U256')])