如何从文本文件映射二维数组

问题描述 投票:4回答:5

我有非常大的文件,包含2d正整数数组

  • 每个文件包含一个矩阵

我想在不将文件读入内存的情况下进行处理。幸运的是,我只需要在输入文件中从左到右查看值。我希望能够mmap每个文件,以便我可以像对待它们一样将它们处理在内存中,而无需实际将文件读入内存。

较小版本的示例:

[[2, 2, 6, 10, 2, 6, 7, 15, 14, 10, 17, 14, 7, 14, 15, 7, 17], 
 [3, 3, 7, 11, 3, 7, 0, 11, 7, 16, 0, 17, 17, 7, 16, 0, 0], 
 [4, 4, 8, 7, 4, 13, 0, 0, 15, 7, 8, 7, 0, 7, 0, 15, 13], 
 [5, 5, 9, 12, 5, 14, 7, 13, 9, 14, 16, 12, 13, 14, 7, 16, 7]]

是否可以mmap这样的文件,然后我可以用[]处理np.int64值>

for i in range(rownumber):
    for j in range(rowlength):
        process(M[i, j])

要清楚,我不希望将所有输​​入文件都存储在内存中,因为它不合适。

我有非常大的文件,其中包含2d个正整数数组。每个文件都包含一个矩阵,我想在不将文件读入内存的情况下对其进行处理。幸运的是,我只需要查看...

python numpy mmap
5个回答
4
投票

更新后的答案


2
投票

主要问题是文件太大,而且似乎也没有分成几行。 (作为参考,array.txt是您提供的示例,arr_map.dat是空文件)


2
投票

您描述的情况似乎更适合于从文件中获取下一个整数或下一行并允许您对其进行处理的生成器。


1
投票

这似乎正是mmap模块在python中所做的事情。请参阅:https://docs.python.org/3/library/mmap.html


1
投票

取决于要在输入矩阵上执行的操作,如果它是矩阵操作,则可以使用partial matrix

© www.soinside.com 2019 - 2024. All rights reserved.