我有第一个数组i
包含日期时间元素(形状(33416,))和第二个数组m
包含浮动值(与形状(33416,20))。这相当于在特定时刻进行的20次测量。 我想根据i
中日益增加的日期时间值和m
数组的排列顺序对i
数组进行排序,以便在此刻瞬间增加测量时间及其相应的20个测量值。 可以帮助我吗?或了解我的需求?通过增加日期时间排序的Numpy
回答
您还可以使用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)
我不完全确定你在问什么 - 你的问题是模糊的 - 为了在这个瞬间增加测量的瞬间和相应的20个测量结果,“相应排列m
阵列”是什么意思?
但是,这里的答案是什么,我认为你是问:
def special_sort(i, m):
myList = zip(i, m)
mylist.sort(key=lambda x: x[0])
return myList
希望这有助于
好的,我应该简化我的请求。例如,'i'包含三个测量时刻: [datetime(2012,02,03,12,00,00), datetime(2012,02,03,15,00,00), datetime(2012, 02,03,13,00,00)] “m”在每个时刻包含2个测量结果[[1.,1.], [3.,3.], [2.,2.]] 我想通过增加次数来获得'i'并且'm' litke this: [[1.,1.], [2.,2], [3.,]] 我希望它是更清晰像这样...谢谢 – user1187727 2012-02-03 14:55:08
'm.sort()'会按照你要求的方式对'm'进行排序。我仍然不明白你想用'i'做什么 – inspectorG4dget 2012-02-03 15:26:24
我想根据我的测量结果的值来增加日期时间的排序... – user1187727 2012-02-03 15:35:45
- 1. 通过星期增加日期
- 2. NumPy的与日期时间
- 3. 由日期时间排序numpy的对象数组
- 4. 日期时间排序
- 5. jqGrid日期时间排序
- 6. 排序日期和时间
- 7. 加盟条件:通过日期时间
- 8. django在日期时间的日期排序/从日期时间提取日期
- 9. 通过比较当前时间和给定时间增加日期1天
- 10. 增加1天的日期和时间
- 11. 通过日期时间
- 12. 通过“日期时间”
- 13. 通过日期时间
- 14. 将所有日期时间或日期列增加一定的时间间隔
- 15. 如果日期更改,增加时间?
- 16. 将日期增加一段时间
- 17. 如何增加日期时间? Python
- 18. 按日期和时间降序排序?
- 19. 存储过程中的日期时间与临时表排序
- 20. 获得通过的日期时间最后一排的SQL Server
- 21. 无法通过包含日期排序
- 22. PHP通过mysql排序数组日期
- 23. 通过JavaScript在表中排序日期
- 24. 组日期时间通过间隔
- 25. 通过日期时间SQL自动递增
- 26. 证明归并排序时间增加
- 27. 通过连续更多日期排序最早的日期
- 28. 获得通过的日期时间
- 29. 通过OPeNDAP的日期时间约定
- 30. 如何通过它的日期时间
中发布详细的I/O规格。这几乎就是这样。但是这也是通过增加顺序来排序所有列。我只想根据时间,除非我弄乱我的测量....我会看看numpy.sort文档... – user1187727 2012-02-03 15:33:33
不是那么明显的问题...这种表示很好:'统一=数组([[[ 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 = 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)'我想获得'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)' – user1187727 2012-02-03 16:14:10
这正是我想要的获取! 谢谢。 (这应该在numpy.sort函数的选项中实现。) – user1187727 2012-02-03 16:33:24