我有一个包含电流和电压数据的非常大(10-100 GB)文件的内存映射。从给定的起始索引,我想找到电压满足给定条件的下一个点的索引。
在一个相对较小的列表的情况下,我可以使用这样的迭代器来做到这一点:
filename = '[redacted]'
columntypes = np.dtype([('current', '>f8'), ('voltage', '>f8')])
data = np.memmap(filename, dtype=columntypes)
current = data['current']
voltage = data['voltage']
condition = (i for i,v in enumerate(voltage) if voltage > 0.1)
print next(condition)
但是因为我的memmap太大了,无法构建迭代器。有没有办法以 Pythonic 的方式执行此操作,而无需实际将数据加载到内存中?我总是可以采取丑陋的方法来读取数据块并循环遍历它,直到找到我需要的索引,但这似乎不优雅。