gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:19:06 25 4
gpt4 key购买 nike

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

关于python - 通过增加日期时间进行 Numpy 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9130452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com