当前位置: 首页 > 面试题库 >

部分读取大型numpy文件的有效方法?

窦华晖
2023-03-14
问题内容

我有一个很大的numpy
3D张量,它存储在磁盘上的文件中(通常使用来读取np.load)。这是一个二进制.npy文件。使用时np.load,我很快就耗尽了大部分内存。

幸运的是,在程序的每次运行中,我只需要庞大张量的一部分即可。切片的尺寸固定,其尺寸由外部模块提供。

最好的方法是什么?我能弄清楚的唯一方法就是以某种方式将此numpy矩阵存储到MySQL数据库中。但我敢肯定有 很多
更好/更简单的方法。如果有帮助,我也很乐意以其他方式构建我的3D张量文件。

如果我的张量本质上是稀疏的,答案会改变吗?


问题答案:

numpy.load照常使用,但一定要指定mmap_mode关键字,以便将数组保留在磁盘上,并且在访问时仅将必要的位加载到内存中。

mmap_mode: {None,’r +’,’r’,’w
+’,’c’},可选如果不是None,则使用给定模式对文件进行内存映射(有关这些模式的详细说明,请参见numpy.memmap
)。内存映射的阵列保留在磁盘上。但是,可以像访问任何ndarray一样对其进行访问和切片。内存映射对于访问大文件的小片段而不将整个文件读入内存特别有用。

模式描述于numpy.memmap

模式: {‘r +’,’r’,’w +’,’c’},可选以这种模式打开文件:’r’打开现有文件,仅供读取。’r +’打开现有文件进行读写。’w
+’创建或覆盖现有文件以进行读取和写入。’c’写时复制:分配会影响内存中的数据,但更改不会保存到磁盘。磁盘上的文件是只读的。

*请确保不要使用“ w +”模式,因为它会删除文件的内容。



 类似资料:
  • 我在NodeJS中看到过从本地读取JSON文件不同方法。像这样; > 方法 使用fs库 方法 使用require() 方法 使用Ajax请求如何使用Jquery和Ajax从JSON文件中检索数据? 可能还有别的办法。但是我听说使用方法1读取JSON文件比其他方法更有效。

  • 问题内容: 我有一个很大的csv文件,因此无法将它们全部读入内存。我只想阅读和处理其中的几行内容。所以我正在Pandas中寻找一个可以处理此任务的函数,基本的python可以很好地处理此任务: 但是,如果我在熊猫中这样做,我总是会读第一行: 我正在寻找一些更简单的方法来处理熊猫中的这项任务。例如,如果我想读取1000到2000的行。如何快速执行此操作? 我想使用熊猫,因为我想将数据读入数据框。 问

  • 我在用图书馆 我在努力 库,但无法将其转换为工作簿 注意:在最终结果中,我希望返回XSSFWorkbook 上面的代码会内存溢出,任何帮助都将提前感谢

  • 问题内容: 我的文件中有1亿条记录,需要一种有效且最快的方法来从中的文件读取数组数组。 文件看起来像: 我想逐行读取此文件为: 首先阅读: 然后: 依此类推:’ 我如何读取这样的文件,我知道它看起来并不完全像文件,但是我需要以另存为JSON的这种格式读取该文件 问题答案: 您可以使用JSON Processing API(JSR 353) 来以流方式处理数据:

  • 问题内容: 我有一个非常大的文本文件(45GB)。文本文件的每一行包含两个空格分隔的64位无符号整数,如下所示。 4624996948753406865 10214715013130414417 4305027007407867230 4569406367070518418 10817905656952544704 3697712211731468838 … … 我想读取文件并对数字进行一些操作。

  • 本文向大家介绍Python按行读取文件的实现方法【小文件和大文件读取】,包括了Python按行读取文件的实现方法【小文件和大文件读取】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python按行读取文件的实现方法。分享给大家供大家参考,具体如下: 小文件: 大文件: 更多关于Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python文本文件操