我有一个包含日期时间元素(形状为 (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)
