numpy.load#
- numpy.load(файл, mmap_mode=None, allow_pickle=False, fix_imports=True, кодировка='ASCII', *, max_header_size=10000)[источник]#
Загрузка массивов или сериализованных объектов из
.npy,.npzили файлы pickle.Предупреждение
Загрузка файлов, содержащих массивы объектов, использует
pickleмодуль, который не защищен от ошибочных или злонамеренно сконструированных данных. Рассмотрите передачуallow_pickle=Falseдля загрузки данных, которые, как известно, не содержат массивов объектов, для безопасной обработки ненадежных источников.- Параметры:
- файлобъект, подобный файлу, строка или pathlib.Path
Файл для чтения. Файлоподобные объекты должны поддерживать
seek()иread()методы и всегда должны открываться в бинарном режиме. Файлы с сериализацией требуют, чтобы файлоподобный объект поддерживалreadline()метод также.- mmap_mode{None, 'r+', 'r', 'w+', 'c'}, опционально
Если не None, то отобразить файл в память, используя указанный режим (см.
numpy.memmapдля подробного описания режимов). Массив с отображением в память хранится на диске. Однако к нему можно обращаться и выполнять срезы, как к любому ndarray. Отображение в память особенно полезно для доступа к небольшим фрагментам больших файлов без загрузки всего файла в память.- allow_picklebool, необязательно
Разрешает загрузку сериализованных массивов объектов, хранящихся в npy-файлах. Причины запрета сериализации включают безопасность, так как загрузка сериализованных данных может выполнять произвольный код. Если сериализация запрещена, загрузка массивов объектов завершится ошибкой. По умолчанию: False
- fix_importsbool, необязательно
Полезно только при загрузке файлов pickle, созданных в Python 2, включая файлы npy/npz, содержащие массивы объектов. Если fix_imports равно True, pickle попытается сопоставить старые имена Python 2 с новыми именами, используемыми в Python 3.
- кодировкаstr, optional
Какую кодировку использовать при чтении строк Python 2. Полезно только при загрузке файлов pickle, сгенерированных в Python 2, включая файлы npy/npz, содержащие массивы объектов. Значения, отличные от 'latin1', 'ASCII' и 'bytes', не допускаются, так как они могут повредить числовые данные. По умолчанию: 'ASCII'
- max_header_sizeint, необязательный
Максимально допустимый размер заголовка. Большие заголовки могут быть небезопасны для безопасной загрузки и поэтому требуют явной передачи большего значения. См.
ast.literal_evalподробности. Эта опция игнорируется, когда allow_pickle передаётся. В этом случае файл по определению считается доверенным, и ограничение не требуется.
- Возвращает:
- результатмассив, кортеж, словарь и т.д.
Данные, хранящиеся в файле. Для
.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()
Отобразить сохраненный массив в память, а затем получить доступ ко второй строке напрямую с диска:
>>> X = np.load('/tmp/123.npy', mmap_mode='r') >>> X[1, :] memmap([4, 5, 6])