上一主题

输入和输出

下一主题

numpy.save

numpy.load

numpy.load(file, mmap_mode=None, allow_pickle=True, fix_imports=True, encoding='ASCII')[source]

.npy.npz或pickled文件加载数组或腌制对象。

参数:

文件:类文件对象或字符串

要读取的文件。类文件对象必须支持seek()read()方法。Pickled文件要求文件样对象也支持readline()方法。

mmap_mode:{None,'r +','r','w +','c'},可选

如果不是None,那么使用给定的模式对内存映射文件(有关模式的详细描述,请参阅numpy.memmap)。内存映射数组保存在磁盘上。但是,它可以像任何ndarray访问和切片。内存映射对于访问大文件的小片段而不将整个文件读入内存特别有用。

allow_pickle:bool,可选

允许加载pickled对象数组存储在npy文件中。禁止pickles的原因包括安全性,因为加载pickled数据可以执行任意代码。如果不允许腌菜,加载对象数组将失败。默认值:True

fix_imports:bool,可选

仅当在Python 3上加载Python 2生成的pickled文件时有用,其中包括包含对象数组的npy / npz文件。如果fix_imports为True,pickle将尝试将旧的Python 2名称映射到Python 3中使用的新名称。

encoding:str,可选

读取Python 2字符串时使用的编码。仅当在Python 3上加载Python 2生成的pickled文件时有用,其中包括包含对象数组的npy / npz文件。不允许使用“latin1”,“ASCII”和“bytes”以外的值,因为它们可能损坏数值数据。默认值:'ASCII'

返回:

result:数组,tuple,dict等

数据存储在文件中。对于.npz文件,返回的NpzFile类的实例必须关闭以避免泄露文件描述符。

上升:

IOError

如果输入文件不存在或无法读取。

ValueError

该文件包含一个对象数组,但allow_pickle = False给定。

也可以看看

savesavezsavez_compressedloadtxt

memmap
创建存储在磁盘上的文件中的数组的内存映射。

笔记

  • 如果文件包含pickle数据,则返回存储在pickle中的任何对象。

  • 如果文件是.npy文件,则返回单个数组。

  • 如果文件是.npz文件,则返回包含{filename: 数组} t2>键值对,一个用于归档中的每个文件。

  • 如果文件是.npz文件,则返回值以类似于open函数的方式支持上下文管理器协议:

    with load('foo.npz') as data:
        a = data['a']
    

    当退出“with”块时,底层文件描述符被关闭。

例子

将数据存储到磁盘,然后重新加载:

>>> np.save('/tmp/123', np.array([[1, 2, 3], [4, 5, 6]]))
>>> np.load('/tmp/123.npy')
array([[1, 2, 3],
       [4, 5, 6]])

将压缩数据存储到磁盘,然后重新加载:

>>> a=np.array([[1, 2, 3], [4, 5, 6]])
>>> b=np.array([1, 2])
>>> np.savez('/tmp/123.npz', a=a, b=b)
>>> data = np.load('/tmp/123.npz')
>>> data['a']
array([[1, 2, 3],
       [4, 5, 6]])
>>> data['b']
array([1, 2])
>>> data.close()

Mem-map存储的数组,然后直接从磁盘访问第二行:

>>> X = np.load('/tmp/123.npy', mmap_mode='r')
>>> X[1, :]
memmap([4, 5, 6])