Skip to main content
 首页 » 编程设计

python之通过增加日期时间进行 Numpy 排序

2025年05月04日17webabcd

我有一个包含日期时间元素(形状为 (33416,))的第一个数组 i 和包含浮点值(形状为 (33416,) 的第二个数组 m 20)).这对应于在特定时刻进行的 20 次测量。 我想根据 i 中增加的日期时间值对 i 数组进行排序,并相应地对 m 数组的行进行排序,以便增加测量时间及其对应的 20 个测量值。 有人可以帮助我吗?或了解我的需求???

请您参考如下方法:

您也可以为此使用 numpy。假设您有:

dates = numpy.array([datetime(2012,02,03,12,00,00), datetime(2012,02,03,15,00,00), datetime(2012,02,03,13,00,00)]) 
values = numpy.array([[1, 1], [3, 3], [2, 2]]) 

你可以先做:

unified = numpy.concatenate((dates.reshape(len(dates), 1), values), axis=1) 

这将合并您的两个列表,考虑到您想要的内容应该是一种更适合保存数据的方式。所以现在你有:

unified = array([[2012-02-03 12:00:00, 1, 1], 
                 [2012-02-03 15:00:00, 3, 3], 
                 [2012-02-03 13:00:00, 2, 2]], dtype=object) 

现在您可以:

unified = numpy.sort(unified, axis=0) 

这将按日期排序。现在,如果您仍然想要单独的列表,您可以通过以下方式获取它们:

unified[:, 0] 
 
>>> array([2012-02-03 12:00:00, 2012-02-03 13:00:00, 2012-02-03 15:00:00], dtype=object) 
 
unified[:, 1:] 
 
>>> array([[1, 1], 
           [2, 2], 
           [3, 3]], dtype=object) 
在您发表评论后

编辑 好的,现在我完全理解你想要什么,你可以通过替换来实现它

   unified = numpy.sort(unified, axis=0)     

与:

   unified = numpy.array(sorted(unified, key= lambda x: x[0])) 

编辑

你试过我刚才的建议了吗?在我的终端中:

    unified = numpy.array([[datetime(2012,02,03,12,00,00), 4, 1],[datetime(2012,02,03,15,00,00), 5, 2],[datetime(2012,02,03,13,00,00), 2, 1]], dtype=object) 
    >>> unified 
        array([[2012-02-03 12:00:00, 4, 1], 
               [2012-02-03 15:00:00, 5, 2], 
               [2012-02-03 13:00:00, 2, 1]], dtype=object) 
 
    >>> unified = numpy.array(sorted(unified, key=lambda x: x[0])) 
    >>> unified 
        array([[2012-02-03 12:00:00, 4, 1], 
               [2012-02-03 13:00:00, 2, 1], 
               [2012-02-03 15:00:00, 5, 2]], dtype=object)