numpy.load #
- 麻木的。load ( file , mmap_mode = None , allow_pickle = False , fix_imports = True , encoding = 'ASCII' , * , max_header_size = 10000 ) [来源] #
.npy
从或pickled 文件加载数组或 pickled 对象.npz
。警告
使用该模块加载包含对象数组的文件
pickle
,该模块不能防止错误或恶意构造的数据。考虑传递allow_pickle=False
已知不包含对象数组的加载数据,以便更安全地处理不受信任的源。- 参数:
- file类似文件的对象、字符串或路径lib.Path
要读取的文件。类文件对象必须支持
seek()
和read()
方法,并且必须始终以二进制模式打开。 Pickled 文件要求类文件对象readline()
也支持该方法。- mmap_mode {无, 'r+', 'r', 'w+', 'c'}, 可选
如果不是“无”,则使用给定模式对文件进行内存映射(
numpy.memmap
有关模式的详细说明,请参阅 参考资料)。内存映射数组保存在磁盘上。然而,它可以像任何 ndarray 一样被访问和切片。内存映射对于访问大文件的小片段而不将整个文件读入内存特别有用。- allowed_pickle布尔值,可选
允许加载存储在 npy 文件中的 pickled 对象数组。禁止 pickles 的原因包括安全性,因为加载 pickle 数据可以执行任意代码。如果不允许 pickles,则加载对象数组将失败。默认值:假
版本 1.16.3 中已更改:响应 CVE-2019-6446,将默认设置为 False。
- fix_imports bool, 可选
仅当在 Python 3 上加载 Python 2 生成的 pickled 文件时有用,其中包括包含对象数组的 npy/npz 文件。如果fix_imports 为 True,pickle 将尝试将旧的 Python 2 名称映射到 Python 3 中使用的新名称。
- 编码str,可选
读取 Python 2 字符串时使用什么编码。仅当在 Python 3 中加载 Python 2 生成的 pickled 文件时有用,其中包括包含对象数组的 npy/npz 文件。不允许使用“latin1”、“ASCII”和“bytes”以外的值,因为它们可能会损坏数字数据。默认值:“ASCII”
- max_header_size int,可选
标头允许的最大大小。大标头可能无法安全地加载,因此需要显式传递更大的值。
ast.literal_eval
详情请参阅。当allow_pickle被传递时,该选项被忽略。在这种情况下,该文件根据定义是受信任的,并且不需要限制。
- 返回:
- 结果数组、元组、字典等
数据存储在文件中。对于
.npz
文件,必须关闭返回的 NpzFile 类实例,以避免泄漏文件描述符。
- 加薪:
- 操作系统错误
如果输入文件不存在或无法读取。
- 取消酸洗错误
如果
allow_pickle=True
,但该文件无法作为 pickle 加载。- 值错误
该文件包含一个对象数组,但
allow_pickle=False
已给出。- EOF错误
当对同一个文件句柄多次调用时
np.load
,如果所有数据已被读取
也可以看看
save
,savez
,savez_compressed
,loadtxt
memmap
创建存储在磁盘文件中的数组的内存映射。
lib.format.open_memmap
创建或加载内存映射
.npy
文件。
笔记
如果文件包含 pickle 数据,则返回 pickle 中存储的任何对象。
如果文件是一个
.npy
文件,则返回一个数组。如果该文件是一个
.npz
文件,则返回一个类似字典的对象,其中包含键值对,一个对应于存档中的每个文件。{filename: array}
如果文件是一个
.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()
对存储的数组进行内存映射,然后直接从磁盘访问第二行:
>>> X = np.load('/tmp/123.npy', mmap_mode='r') >>> X[1, :] memmap([4, 5, 6])