python - CSV 数据 - 使用 numpy 的列段的最大值

标签 python arrays csv numpy

假设我有一个 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/

相关文章:

python - 有没有办法通过给定的对象地址访问 gdb 中的 python 对象?

java - java中如何更改字符数组中的字符

Java 将两个 double[][] 与并行流相加

javascript - 使用 PapaParse 正确解析本地文件

python - 将整个 csv 列加载到数组中?

Python 和 SQLite : Not all arguments converted during string formatting error

python - 在elasticsearch-py中搜索多个索引产生0个文档

python - 键错误:0 Python

python - 如何在行和列中剪切 python 输出

arrays - n 个数组的最小 "n"和