gpt4 book ai didi

python - 以追加模式保存numpy数组

转载 作者:IT老高 更新时间:2023-10-28 22:00:56 31 4
gpt4 key购买 nike

是否可以保存一个 numpy 数组并将其附加到已经存在的 npy 文件 --- 类似于 np.save(filename,arr,mode='a')

我有几个函数必须遍历一个大数组的行。由于内存限制,我无法立即创建数组。为了避免一遍又一遍地创建行,我想创建每一行一次并将其保存到文件中,并将其附加到文件中的前一行。稍后我可以在 mmap_mode 中加载 npy 文件,在需要时访问切片。

最佳答案

内置 .npy 文件格式非常适合处理小型数据集,无需依赖 numpy 以外的外部模块。

但是,当您开始拥有大量数据时,最好使用 HDF5 等旨在处理此类数据集的文件格式 [1] .

例如,以下是将 numpy 数组保存在 HDF5 中的解决方案,其中 PyTables ,

第 1 步:创建可扩展的 EArray存储

import tables
import numpy as np

filename = 'outarray.h5'
ROW_SIZE = 100
NUM_COLUMNS = 200

f = tables.open_file(filename, mode='w')
atom = tables.Float64Atom()

array_c = f.create_earray(f.root, 'data', atom, (0, ROW_SIZE))

for idx in range(NUM_COLUMNS):
x = np.random.rand(1, ROW_SIZE)
array_c.append(x)
f.close()

第 2 步:将行追加到现有数据集(如果需要)

f = tables.open_file(filename, mode='a')
f.root.data.append(x)

第 3 步:读回数据子集

f = tables.open_file(filename, mode='r')
print(f.root.data[1:10,2:20]) # e.g. read from disk only this part of the dataset

关于python - 以追加模式保存numpy数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30376581/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com