Вы можете использовать массив dask , который имитирует API-интерфейс numpy, но использует локальный диск для объектов, превышающих объем памяти
>>> import numpy as np
>>> np.zeros((5000,1024,1024,1), dtype=np.uint8)
Traceback (most recent call last):
File "<input>", line 1, in <module>
np.zeros((5000,1024,1024,1), dtype=np.uint8)
MemoryError
>>> import dask.array as da
>>> da.zeros((5000,1024,1024,1), dtype=np.uint8)
dask.array<zeros, shape=(5000, 1024, 1024, 1), dtype=uint8, chunksize=(500, 256, 256, 1)>