Numpy неправильно восстанавливает размеры (вызовы tofile и fromfile) - PullRequest
1 голос
/ 26 марта 2019

Я пытаюсь сохранить и восстановить файл

arr.tofile("saved_arr.npy", sep=" ") #shape is (4, 5000, 5000)
arr = np.fromfile("saved_arr.npy") #shape is (278564007, )

Как правильно восстановить ndarray (4, 5000, 5000) формы?

Спасибо

Ответы [ 2 ]

1 голос
/ 26 марта 2019

В python3 попробуйте следующее.

import numpy as np
#make an array of your desired dimensions
arr = np.random.random((4, 5000, 5000))
print(f'The shape of my array is {arr.shape}. \n')
#save your array
print('saving your array \n')
np.save('arr.npy', arr)
#load your array
u = np.load('arr.npy')
#finally check if both arrays are equal
print(f'My arrays are equal: {np.array_equal(u, arr)}')

Надеюсь, это поможет.

1 голос
/ 26 марта 2019

Я предполагаю, что вы не используете numpy.save и numpy.load, потому что вам нужен вывод, записанный в виде текстового файла. Эти методы восстанавливают ваш массив NumPy как есть с размерами. Если вы используете tofile и fromfile, они записывают выходные данные в порядке C, что означает, что по умолчанию данные распределяются в одномерный массив по одной строке за раз. Вам нужно вызвать метод numpy.reshape в вашем массиве, чтобы вернуть его к нужным измерениям. Также убедитесь, что вы указали правильный разделитель. Вы пропустили это в вызове fromfile, что означает, что файл должен рассматриваться как двоичный файл.

Если вы должны использовать эти методы, попробуйте:

arr.tofile("saved_arr.npy", sep=" ")
arr = np.fromfile("saved_arr.npy", sep=" ").reshape((4, 5000, 5000))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...