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
在这种情况下,doest广播是指什么?
答案 0 :(得分:0)
这里,广播正在复制(1000,1000)阵列1000次,因此它匹配(1000,1000,1000)形状。
H5py在写入磁盘之前不会先在内存中创建完整数组,而是将1000(1000,1000)数组写入1000次,在磁盘上创建正确的数组,同时只使用1/1000的内存。
您可以详细了解numpy广播的规则here。