0

h5py 文档 ( http://www.h5py.org/docs/high/dataset.html ) 说明如下:

重要的是,h5py 在写入之前不使用 NumPy 进行广播...

>>> dset2 = f.create_dataset("MyDataset", (1000,1000,1000), 'f')
>>> data = np.arange(1000*1000, dtype='f').reshape((1000,1000))
>>> dset2[:] = data  # Does NOT allocate 3.8 G of memory

在这种情况下,广播指的是什么?

4

1 回答 1

0

在这里,广播是复制 (1000,1000) 数组 1000 次,因此它匹配 (1000,1000,1000) 形状。

H5py 在写入磁盘之前不会先在内存中创建完整的数组,而是将 (1000,1000) 数组写入 1000 次,在磁盘上创建正确的数组,同时仅使用 1/1000 的内存。

您可以在此处阅读有关 numpy 广播规则的更多信息。

于 2014-01-25T17:07:34.783 回答