You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对np.array格式的日期矩阵排序并还原为初始格式?

按日期排序numpy矩阵并还原原格式的解决方案

核心思路

不需要将矩阵转换为datetime对象再转回,直接利用numpy的多关键字排序功能,按照年→月→日→时→分→秒的优先级排序,就能直接得到原格式的排序后矩阵。

解决方案代码

import numpy as np

data = np.array(
    [[2015, 1, 1, 23, 4, 59],
     [2015, 4, 30, 23, 5, 1],
     [2015, 1, 1, 23, 5, 25],
     [2015, 2, 15, 58,5, 0],
     [2015, 5, 20, 50, 27, 37],
     [2015, 6, 21, 25, 27, 29]]
)

# 按秒、分、时、日、月、年的逆序传入参数,实现年→月→日→时→分→秒的优先级排序
sorted_data = data[np.lexsort((data[:,5], data[:,4], data[:,3], data[:,2], data[:,1], data[:,0]))]

print("排序后的矩阵:")
print(sorted_data)

代码说明

  • *np.lexsort*是numpy的多关键字排序函数,参数需按逆序传入排序优先级:最后一个参数是最优先的排序关键字。这里传入的顺序是秒、分、时、日、月、年,实际实现的是年>月>日>时>分>秒的排序逻辑。
  • 排序后直接返回原格式的numpy数组,完全保留原矩阵的结构和数据类型,无需额外转换步骤。

输出结果

排序后的矩阵:
[[2015    1    1   23    4   59]
 [2015    1    1   23    5   25]
 [2015    2   15   58    5    0]
 [2015    4   30   23    5    1]
 [2015    5   20   50   27   37]
 [2015    6   21   25   27   29]]

注意:如果矩阵中存在非法时间值(比如小时为58),np.lexsort会按数值大小直接排序。若需校验日期合法性,可先通过datetime模块过滤异常行,再执行排序操作。

内容的提问来源于stack exchange,提问作者NTK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:05:20