将多个大型float32矩阵合并为一个并存储

时间:2019-07-03 05:35:19

标签: python matrix large-data

我正在尝试将大小为256 x 6000000,类型为numpy.float32的34个矩阵合并到一个矩阵中,并将其存储在系统中。每个矩阵都存储在单独的.npy文件中。

这是我正在使用的脚本:

import numpy as np
import os

# combined matrix variable
amp_data = []
count=0
for filename in os.listdir(os.getcwd()):
    if filename.endswith('.npy'):
    if count==0:
        amp_data = np.load(filename, mmap_mode='r')   
    else:
        amp_ = np.load(filename, mmap_mode='r')
        amp_data = np.hstack((amp_data, amp_))
        del amp_
    count = count+1

我的系统显然遇到内存错误(RAM:64Gb)。我有办法将这些矩阵合并为一个并保存吗?

1 个答案:

答案 0 :(得分:1)

是的。 npy格式记录在NEP 1 — A Simple File Format for NumPy Arrays中。它旨在易于反向工程或由其他程序直接处理。

因此您应该能够一次读取文件并将其直接写入更大的npy文件中。


参考文献:

  

要求
  该格式必须能够:
...
  有能力的开发人员应该能够使用他喜欢的编程语言创建一个解决方案,以读取大多数NPY文件...

您将在What is the way data is stored in *.npy?

中找到其他示例和参考。

您甚至可以在numpy/format.py中找到可重用的代码。