我有一系列*。对numpy来说太大而无法处理的tiff电影
(shape = (1, 9000, 512, 512))
看起来像是
dask.array.image.imread
可以处理这个问题(根据这个问题的答案:
out of core 4D image tif storage as hdf5 python
).
创建阵列时,
达斯克。大堆形象imread公司
当尝试导入任何大文件时,会出现内存错误。然而,它确实可以使用
shape = (1, 20, 512, 512)
,所以我认为这一定与块大小有关。我试着看看是否可以在imread中导入时更改块大小,但我没有找到任何结果。
当达斯克自己的时候
imread
没用,我试过了
dask_imread
package
,它似乎有能力将帧分割成块。有趣的是,在创建数组时,它给了我一个运行时警告,但是在
print(foo_array)
仍然返回
dask.array<from-value, shape=(1, 9000, 512, 512), dtype=uint16, chunksize=(1, 9000, 512, 512)>
块大小为
整个文件。
.rechunk((1,20,512,512))
退货
dask.array<rechunk-merge, shape=(1, 9000, 512, 512), dtype=uint16, chunksize=(1, 20, 512, 512)>
正如所料。
但是,在运行时
.compute()
例如,在数组的任何元素上
print(foo_array[0,1234,123,123].compute())
给出了一个MemoryError。
我试着导入为
foo_array = imread(file_to_use,chunksize=(1,20,512,512))
但似乎两者都不是
imread公司
拿
chunksize
作为一个夸尔格。
如何在导入时更改chunksize
imread公司
例如(1,20512512)(这似乎是可以管理的)?