numpy - 对非常大的一维数组进行排序

标签 numpy pandas pytables

我即将第一次尝试 Pytables,我需要按时间步长将数据写入 hdf 文件。我将有超过 100,000 个时间步长。完成后,我想按第 2 列对我的 100,000+ x 6 数组进行排序,即,我目前已按时间对所有内容进行排序,但现在我需要按降水率(第 2 列)的顺序对数组进行排序。我不确定如何从这里开始。我知道将整个数组放在内存中是不明智的。任何想法如何快速有效地做到这一点?

感谢任何建议。

最佳答案

I know that having the entire array in memory is unwise.

你可能想多了。一个 100K x 6 的 float64 数组只需要大约 5MB 的内存。在我的电脑上,对这样的数组进行排序大约需要 27 毫秒:

In [37]: a = np.random.rand(100000, 6)

In [38]: %timeit a[a[:,1].argsort()]
10 loops, best of 3: 27.2 ms per loop

关于numpy - 对非常大的一维数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14438509/

相关文章:

python - Pytables。如何迭代唯一值?

python - 在 Pandas 中查询 HDF5

python - numpy 数组到一个文件,np.savetxt

python - 在距离最小的列表中找到 N 个最大的元素

python - 分隔存储两种不同数据类型的列

python - 从 Protocol Buffer 创建一个类似对象的 python 字典以用于 pandas

python - 从 HDFStore 检索多索引 Pandas DataFrame 时遇到问题(以表格式)

python - np.linalg.norm(a-b) 和 np.sqrt(np.sum(np.square(a-b))) 之间的区别?

python - 所有行对上的快速点积

python - 如何将非重叠数据帧矢量化为重叠移位数据帧?