【发布时间】:2013-02-11 02:42:34
【问题描述】:
我遇到的实际问题是我想在 RAM 中存储 (float, str) 元组的长排序列表。一个普通的列表不适合我的 4Gb RAM,所以我想我可以使用两个 numpy.ndarrays。
数据源是 2 元组的可迭代对象。 numpy 有一个 fromiter 函数,但是我该如何使用它呢?迭代中的项目数是未知的。由于内存限制,我不能先将它消耗到列表中。想到了itertools.tee,不过这里好像增加了不少内存开销。
我想我可以做的是分块使用迭代器并将它们添加到数组中。那么我的问题是,如何有效地做到这一点?我是否应该制作 2 个二维数组并向它们添加行? (然后我需要将它们转换为 1D)。
或者也许有更好的方法?我真正需要的只是在对数时间内通过相应数字的值搜索字符串数组(这就是我想按浮点值排序的原因)并使其尽可能紧凑。
附:可迭代对象未排序。
【问题讨论】:
-
使用
np.fromiter构建一个包含两列的数组就足够了吗? -
@unutbu ...我不知道为什么我没有考虑过 :) 听起来是个好主意。然后我只是沿着较长的轴对其进行排序并保持这种方式,对吗?我想您可以将其发布为答案。
标签: python arrays numpy iteration