Numpy无法正确还原尺寸(tofile和fromfile调用)

时间:2019-03-26 19:06:21

标签: python numpy

我正在尝试从文件保存和还原

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

如何正确恢复(4, 5000, 5000)形状的ndarray?

谢谢

2 个答案:

答案 0 :(得分:1)

我假设您不使用numpy.savenumpy.load,因为您需要将输出写为文本文件。这些方法将维度还原为NumPy数组。如果使用tofilefromfile,它们将以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)}')

希望对您有帮助。