向负方向扩展HDF5数据集

航空工程师

我在HDF5文件中有一个相当大的2D数据集(约1000行x 500000列)。数据集已创建,因此可以无限扩展,因此我可以轻松地在底部添加新行,在右侧添加新列。但是,有时我需要在左侧添加新列...而这就是我遇到的问题。是否可以通过这种方式扩展现有数据集。我现在知道怎么做的唯一方法是基本上加载所有数据并完全重写文件。但是,这似乎效率很低。仅供参考,我正在使用Matlab 2012a和现有创建的低级HDF5命令“示例”部分,并在下面添加列代码。

基本上我想扩展此:

1 2 3
4 5 6
7 8 9

为此,而不必全部加载或重写整个文件。

NaN 1 2 3
NaN 4 5 6
NaN 7 8 9

创建代码的示例代码嗅探,其中包含传入的数据:

case 'create'
        data = varargin{1};
        % ---------- Data Info ----------
        dims = fliplr(size(data));  %flip due to H5 indexing order
        % ---------- Create Initial HDF5 File ----------
        fileID = H5F.create(filename, 'H5F_ACC_TRUNC', 'H5P_DEFAULT', 'H5P_DEFAULT');
        % Create dataspace with unlimited dimensions.
        datatypeID = H5T.copy('H5T_NATIVE_DOUBLE');
        maxdims = {'H5S_UNLIMITED', 'H5S_UNLIMITED'};
        spaceID = H5S.create_simple (2, dims, maxdims);
        % ---------- Create the dataset property list, add gzip, set chunk
        chunk = [1024 1];
        propID = H5P.create('H5P_DATASET_CREATE');
        H5P.set_deflate(propID, 5);
        H5P.set_chunk(propID, chunk);
        H5P.set_fill_value(propID,datatypeID,NaN); %Fill with NaNs on creation
        % ---------- Create the compressed unlimited dataset.
        datasetID = H5D.create(fileID, dataName,datatypeID, spaceID, propID);
        % ---------- Write the data to the dataset.
        H5D.write(datasetID, datatypeID,'H5S_ALL', 'H5S_ALL','H5P_DEFAULT', data);
        % ---------- Close
        H5P.close(propID);
        H5D.close(datasetID);
        H5S.close(spaceID);
        H5F.close(fileID);

在右侧添加一列的示例...可以将其添加到左侧吗?

case 'addColumns'
        c2Add = varargin{1}; %# of columns to add
        prevH5Info = h5info(filename);
        newdims(1) = prevH5Info.Datasets.Dataspace.Size(1);
        newdims(2) = prevH5Info.Datasets.Dataspace.Size(2)+c2Add;
        newdims = fliplr(newdims); %flip due to H5 indexing order
        fileID = H5F.open(filename, 'H5F_ACC_RDWR', 'H5P_DEFAULT');
        datasetID = H5D.open(fileID, dataName);
        % ---------- Get Data Space and Extend Existing Dimensions
        H5D.extend(datasetID, newdims);
        % ---------- Close
        H5D.close(datasetID);
        H5F.close(fileID);
西蒙

否,即使使用低级HDF5命令也不可行。

唯一的解决方案是昂贵的解决方案:扩展数据集的末尾,移动现有内容,然后在开始处添加新数据。

希望您“偶尔”说一下,这样性能可能就不会成为问题了……

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

HDF5:如何将数据追加到数据集(可扩展数组)

来自分类Dev

在Julia中调整HDF5数据集的大小

来自分类Dev

将大型SAS数据集转换为hdf5

来自分类Dev

无法在Python中创建HDF5数据集的引用

来自分类Dev

将大型SAS数据集转换为hdf5

来自分类Dev

无法在 Python 中创建 HDF5 数据集的引用

来自分类Dev

HDF5 简单读取数据集失败

来自分类Dev

向负方向发出绘图矩形-Java

来自分类Dev

如何区分HDF5数据集和具有h5py的组?

来自分类Dev

将数据从hdf5数据集传输到numpy数组时精度下降

来自分类Dev

访问包含异常数据类型的HDF5文件中的数据集

来自分类Dev

将C ++数据结构转换为可理解的HDF5数据集(向量对)

来自分类Dev

将数据从hdf5数据集传输到numpy数组时精度下降

来自分类Dev

由Python创建的HDF5数据集在Matlab中转置

来自分类Dev

从HDF5文件中删除数据集属性

来自分类Dev

在Fortran中读取HDF5数据集的子集时出现问题

来自分类Dev

将通过pandas / pytables编写的大型hdf5数据集转换为vaex

来自分类Dev

由Python创建的HDF5数据集在Matlab中转置

来自分类Dev

C扩展(HDF5)中的IO绑定线程的GIL

来自分类Dev

错误:H5LTfind_dataset(file_id,dataset_name_)未能找到HDF5数据集标签

来自分类Dev

向HDF5文件中添加新数据会导致一个空数组

来自分类Dev

HDF5的行数

来自分类Dev

无法找到HDF5数据集数据

来自分类Dev

将更多数据集添加到现有的Hdf5文件中,而不删除其他组和数据集

来自分类Dev

HDF5是存储JSON数据的适当技术吗?

来自分类Dev

PyTables和HDF5:树数据的大量开销

来自分类Dev

熊猫HDF5作为数据库

来自分类Dev

难以解析hdf5复合数据类型

来自分类Dev

将数据从HDF5加载到C ++中的矢量

Related 相关文章

热门标签

归档