假设我有一个 csv 文件,其中包含如下数据:
'time' 'speed'
0 2.3
0 3.4
0 4.1
0 2.1
1 1.3
1 3.5
1 5.1
1 1.1
2 2.3
2 2.4
2 4.4
2 3.9
我希望能够返回此文件,以便对于标题“时间”下的每个递增数字,我对列速度中找到的最大数字进行细化,并将该速度数字返回到数组中时间数字旁边。我使用的实际 csv 文件要大得多,因此我想要迭代大量数据,而不仅仅是在“时间”为 0、1 或 2 的情况下运行它。
所以基本上我希望它返回:
array([[0,41], [1,5.1],[2,4.4]])
专门使用numpy。
最佳答案
在 NumPy 中以完全矢量化的方式完成这有点棘手。这是一种选择:
a = numpy.genfromtxt("a.csv", names=["time", "speed"], skip_header=1)
a.sort()
unique_times = numpy.unique(a["time"])
indices = a["time"].searchsorted(unique_times, side="right") - 1
result = a[indices]
这会将数据加载到具有两个字段的一维数组中,并首先对其进行排序。结果是一个数组,其数据按时间分组,最大速度值始终是每组中的最后一个。然后,我们确定出现的唯一时间值,并找到每个时间值数组中最右边的条目。
关于python - CSV 数据 - 使用 numpy 的列段的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22745342/