我正在尝试从文件保存和还原
arr.tofile("saved_arr.npy", sep=" ") #shape is (4, 5000, 5000)
arr = np.fromfile("saved_arr.npy") #shape is (278564007, )
如何正确恢复(4, 5000, 5000)
形状的ndarray?
谢谢
答案 0 :(得分:1)
我假设您不使用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))
答案 1 :(得分:1)
在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)}')
希望对您有帮助。