让我们对一个文件进行几次保存:
In [92]: ofile = open('test.npy', 'ab')
In [93]: np.save(ofile, np.array([], object))
In [94]: arr = np.array([], object)
In [95]: arr = np.append(arr, np.array([1,2,3]))
In [96]: arr
Out[96]: array([1, 2, 3], dtype=object)
In [97]: arr = np.append(arr, np.array([1,2,3]))
In [98]: arr
Out[98]: array([1, 2, 3, 1, 2, 3], dtype=object)
In [99]: np.save(ofile, arr)
In [100]: np.save(ofile, np.arange(12).reshape(3,4))
In [101]: ofile.close()
做普通负载:
In [103]: np.load('test.npy', allow_pickle=True)
Out[103]: array(['âª'], dtype=object)
看来我拿到原版了
[]
而是打开文件,并尝试重复加载:
In [107]: f = open('test.npy', 'rb')
In [108]: np.load(f, allow_pickle=True)
Out[108]: array(['âª'], dtype=object) # one
In [109]: np.load(f, allow_pickle=True)
Out[109]: array([], dtype=object) # two
In [110]: np.load(f, allow_pickle=True)
Out[110]: array([1, 2, 3, 1, 2, 3], dtype=object) # three
In [111]: np.load(f, allow_pickle=True) # four
Out[111]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [112]: np.load(f, allow_pickle=True)
---------------------------------------------------------------------------
EOFError
所以,是的,可以将多个数组保存并加载到一个文件中,但这并不是它的初衷。
np.savez
用于保存多个文件。保存对象数据类型数组可能会有问题。它们的数据缓冲区有指向内存中其他位置的对象的指针。指针在保存/加载序列中无效。因此,它必须使用酸洗。