下面是我打算做的一个简单的摘录
loop1 = range(10)
loop2 = range(10)
loop3 = range(100)
list = []
for l in loop1:
for n in loop2:
for m in loop3:
list.append([l,n,m])
dSet = []
for l in list:
matrix = np.ones((600,600))
matrix = l[2]*matrix
dSet.append(matrix)由于将有10,600*600个矩阵,因此dSet不能容纳那么多数据,从而导致每次都会发生内存泄漏。所以我想使用h5py(hdf5)来存储dSet,并为每100个for循环刷新到磁盘,有什么好的解决方案吗?
非常感谢
发布于 2014-11-13 17:22:55
当然你可以做到这一点,但这取决于你想要做什么:
您是希望将10,000个600x600矩阵中的每一个都存储在其自己的数据集中,还是希望拥有一个巨大的矩阵(6000000x600)?
在第一种情况下,使用dset = f.create_dataset("init", data=myData)为每个矩阵创建自己的数据集
在第二种情况下,您必须在创建数据集之后循环并以块的形式写入数据。大致是这样的:
dset = f.create_dataset("MyDataset", (6000000x600,600), 'f')
for idx,l in enumerate(list):
start = idx*600
matrix = np.ones((600,600))
matrix = l[2]*matrix
dSet[start:start+600] = matrix只有在事先知道总大小的情况下,这才能起作用。如果没有,您可以使用可扩展的数据集(有关更多详细信息,请参阅here )
https://stackoverflow.com/questions/26890272
复制相似问题