numpy.load#
- numpy.load(file, mmap_mode=None, allow_pickle=False, fix_imports=True, encoding='ASCII', *, max_header_size=10000)[源代码]#
从
.npy,.npz或 pickle 文件加载数组或 pickle 对象.警告
加载包含对象数组的文件会使用
pickle模块,该模块对于错误或恶意构造的数据并不安全. 考虑传递allow_pickle=False以加载已知不包含对象数组的数据,以便更安全地处理不受信任的源.- 参数:
- file类文件对象,字符串或 pathlib.Path
要读取的文件.类文件对象必须支持
seek()和read()方法,并且必须始终以二进制模式打开.Pickle 文件还要求类文件对象支持readline()方法.- mmap_mode{None, ‘r+’, ‘r’, ‘w+’, ‘c’},可选
如果不是 None,则 memory-map 该文件,使用给定的模式(有关模式的详细说明,请参阅
numpy.memmap).内存映射数组保存在磁盘上.但是,它可以像任何 ndarray 一样被访问和切片.内存映射对于访问大文件的小片段而无需将整个文件读入内存特别有用.- allow_picklebool, 可选
允许加载存储在 npy 文件中的 pickle 对象数组.不允许 pickle 的原因包括安全性,因为加载 pickle 数据可以执行任意代码.如果禁止 pickle,则加载对象数组将失败.默认值:False
- fix_importsbool, 可选
仅在加载 Python 2 生成的 pickle 文件时有用,其中包括包含对象数组的 npy/npz 文件.如果 fix_imports 为 True,pickle 将尝试将旧的 Python 2 名称映射到 Python 3 中使用的新名称.
- encodingstr, optional
读取 Python 2 字符串时要使用的编码.仅在加载 Python 2 生成的 pickle 文件时有用,其中包括包含对象数组的 npy/npz 文件.不允许使用 ‘latin1’,’ASCII’ 和 ‘bytes’ 之外的值,因为它们可能会损坏数值数据.默认值:’ASCII’
- max_header_size整数,可选
header 允许的最大大小. 大型 header 可能无法安全加载,因此需要显式传递更大的值. 有关详细信息,请参见
ast.literal_eval. 传递 allow_pickle 时,将忽略此选项. 在这种情况下,根据定义,该文件是受信任的,并且该限制是不必要的.
- 返回:
- result数组,元组,字典等.
文件中存储的数据.对于
.npz文件,返回的NpzFile类实例必须关闭,以避免文件描述符泄露.
- 提出:
- OSError
如果输入文件不存在或无法读取.
- UnpicklingError
如果
allow_pickle=True,但文件无法作为pickle加载.- ValueError
文件包含对象数组,但给出了
allow_pickle=False.- EOFError
当对同一文件句柄多次调用
np.load时,如果所有数据都已被读取
参见
save,savez,savez_compressed,loadtxtmemmap创建磁盘上存储的数组的内存映射.
lib.format.open_memmap创建或加载内存映射的
.npy文件.
注释
如果文件包含pickle数据,则返回pickle中存储的任何对象.
如果文件是
.npy文件,则返回单个数组.如果文件是
.npz文件,则返回一个类似字典的对象,其中包含{filename: array}键值对,每个键值对对应于存档中的一个文件.如果文件是
.npz文件,则返回值支持上下文管理器协议,其方式与open函数类似:with load('foo.npz') as data: a = data['a']
退出’with’块时,底层文件描述符将被关闭.
示例
>>> import numpy as np
将数据存储到磁盘,然后再次加载:
>>> 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])