有多种方法可以做到这一点。让我们获取以下数据 -
timeStamp = [9,1,2,3,9999]
data = [1245, 6234,2372,1251,5172]
使用基础 python 和 zip
处理数据的默认方式,特别是列表。 zip 方法允许您按元素压缩两个或多个列表,创建一个元组列表。然后,您可以将sorted 与 lamda 函数一起使用,该函数按元素的特定位置对组合列表进行排序。
l = zip(timeStamp, data) #storing 2 arrays by attaching them elementwise
print(sorted(l, key=lambda x: x[0]))
[(1, 6234), (2, 2372), (3, 1251), (9, 1245), (9999, 5172)]
使用 numpy 和 argsort
Numpy 允许您使用多维数组。对于 2 个列表,您可以简单地将它们 np.stack 一起创建一个 2D 数组。
为了进行排序,您可以在第一列(时间戳)上使用argsort(),它返回已排序的有序列的索引。然后你可以使用这些索引来索引原始的二维数组,以得到数组按时间戳排序的顺序。
arr = np.stack([timeStamp, data])
arr[:,arr[0].argsort()]
array([[ 1, 2, 3, 9, 9999],
[6234, 2372, 1251, 1245, 5172]])
使用 pandas datafames 和 sort_values
最后,同时处理多个列表的最佳方法是将它们视为 DataFrame 中的列。 Pandas 提供了一个方便的框架来处理列/行排列的数据,在这种情况下非常有用,因为您还可以使用列名来识别每个数组/列。
sort_values 允许您根据列名快速对完整数据进行排序。
import pandas as pd
df = pd.DataFrame(zip(timeStamp, data), columns=['timeStamp','data'])
print(df.sort_values('timeStamp'))
timeStamp data
1 1 6234
2 2 2372
3 3 1251
0 9 1245
4 9999 5172