Ist es möglich, eine numpy.memmap
ohne Kenntnis der Form zu laden und immer noch die Form der Daten zu erholen?laden np.memmap ohne Wissen Form
data = np.arange(12, dtype='float32')
data.resize((3,4))
fp = np.memmap(filename, dtype='float32', mode='w+', shape=(3,4))
fp[:] = data[:]
del fp
newfp = np.memmap(filename, dtype='float32', mode='r', shape=(3,4))
In der letzten Zeile, mag ich nicht in der Lage sein, die Form zu spezifizieren und die Variable newfp
immer noch (3,4)
die Form zu haben, so wie es mit joblib.load
passieren würde. Ist das möglich? Vielen Dank.
Die Sache ist ich mit sehr großen Datenmengen zu tun habe und 'memmap' vermeidet das Auffüllen des gesamten RAM. Ich verwende es auch mit 'joblib.Parallel', um parallel auf Platte zu schreiben. – Michael
Wie bereits erwähnt, können Sie eine '.npy'-Datei auch als Speichermapping-Array öffnen, indem Sie den Parameter' memmap_mode = 'an' np.load' übergeben. Eine andere Option wäre, eine Kombination von 'joblib.dump' und' joblib.load' mit dem Parameter 'memmap_mode =' zu verwenden, der 'np.save' und' np.load' unter der Haube verwendet. –
Angenommen, ich muss 100 GB Daten initialisieren, und ich habe nur 32 GB RAM. In dieser Situation bin ich gezwungen, 'memmap' im Schreibmodus zu verwenden. Nun funktioniert 'np.load' in einem solchen Fall nicht: Ich muss es im Lesemodus erneut mit' memmap' lesen. Die Frage ist, wie man das macht, ohne die Form der Daten zu kennen und trotzdem die richtigen Formen zu erhalten. – Michael