我想加载和分析hdf5-文件中的大量图像。每个图像都是1920x1920 uint16,将所有图像加载到内存中会使计算机崩溃。有人告诉我,其他人可以通过切片图像来解决此问题,例如如果数据是1920x1920x100(100张图像),则它们读取每个图像的前80行并分析该切片,然后移至下一个切片。我可以毫无问题地做到这一点,但是当我尝试在hdf5文件中创建数据集时,它会收到类型错误:无法将元素0 ...转换为hsize_t
我可以使用以下非常简化的代码来重新创建问题:
with h5py.File('h5file.hdf5','w') as f:
data = np.random.randint(100, size=(15,15,20))
data_set = f.create_dataset('data', data, dtype='uint16')
它给出了输出:
TypeError: Can't convert element 0 ([[29 50 75...4 50 28 36 13 72]]) to hsize_t
我也尝试省略“data_set =”和“dtype ='uint16'”,但是仍然出现相同的错误。代码如下:
with h5py.File('h5file.hdf5','w') as f:
data = np.random.randint(100, size=(15,15,20))
f.create_dataset('data', data)
谁能给我任何有关问题所在的提示吗?
干杯!
最佳答案
create_dataset
的第二个参数是shape参数(请参阅docs),但是您传递了整个数组。如果要使用现有数组初始化数据集,则必须使用data
关键字来指定它,如下所示:
data_set = f.create_dataset('data', data=data, dtype="uint16")
关于python - h5py无法将元素0转换为hsize_t,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37121110/