Is there a method to save a numpy memmap array into a
data = numpy.load("input.npy", mmap_mode='r')
is there a way to infer the shape of the stored array?
No. As far as
np.memmap is concerned the file is just a buffer - it stores the contents of the array, but not the dimensions, dtype etc. There's no way to infer that information unless it's somehow contained within the array itself. If you've already created an
np.memmap backed by a simple binary file then you would need to write its contents to a new
.npy file on disk.
You could avoid generating a copy in memory by opening the new
.npy file as another memory-mapped array using
import numpy as np from numpy.lib.format import open_memmap # a 10GB memory-mapped array x = np.memmap('/tmp/x.mm', mode='w+', dtype=np.ubyte, shape=(int(1E10),)) # create a memory-mapped .npy file with the same dimensions and dtype y = open_memmap('/tmp/y.npy', mode='w+', dtype=x.dtype, shape=x.shape) # copy the array contents y[:] = x[:]