我正在排序一大堆值。数组大小为(1e9, 3)
中的float16
,即dtype='f2'
中的numpy
。因此,当它构建并坐在那里时,它需要大约6GB的内存。
然后我对这个大型数组进行排序,这个数组运行内存高达3-4倍,原因我不太了解。我用来对它进行排序的公式(它应该只从我可以收集的数据中生成一个数组的一个临时副本),如下所示:
arr = arr[arr[:,idx].argsort()]
这种方法有效并且不会将我的记忆炸毁到崩溃的程度,虽然它确实会泄漏到虚拟内存中(幸运的是我有16GB的内存)。
我的问题是:大数组实际上由22个较小的数组组成,这些数组在子函数中连接在一起。在构建大型数组并对其进行排序之前,是否可以从预先排序每个较小的数组中获得什么?