numpy.load

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

Функция load() загружает массивы из файлов формата .npy или .npz, а также pickle объектов и pickle файлов.

Параметры:
file - строка, файловый объект, экземпляр класса pathlib.Path.
Файл из которого должен быть загружен массив. Если файловые объекты не поддерживают методы seek () и read (), а объекты pickle файлов не поддерживают метод readline (), то будет возвращена ошибка IOError.
mmap_mode - {None, ‘r+’, ‘r’, ‘w+’, ‘c’} (необязательный параметр).
Определяет режим доступа к файлу: r+ - открытие файла только для чтения и записи; r - открытие только для чтения; w+ - создание или перезапись существующего файла в режиме чтения и записи; c - копирование при записи в файл, изменения влияют на данные в памяти, но изменения не сохраняются на диск, при этом сам файл, по сути, доступен только для чтения. Сам файл хранится на диске, но отображается в память компьютера, это дает полный доступ к массиву и позволяет выполнять операции над ним в привычном режиме. Данный параметр так же позволяет получать доступ к небольшим срезам больших массивов, без чтения самого массива. None
allow_pickle - True или False (необязательный параметр).
Определяет разрешать или нет загрузку массивов в pickle объектах, из файлов .npy. Загрузка pickle объектов может выполнять произвольный код, что может угрожать безопасности системы, так что если вы не доверяете источнику данных, то можете запретить загрузку файлов, установив False, но это приведет к исключению ValueError. По умолчанию True.
fix_imports - True или False (необязательный параметр).
Определяет необходимость конвертирования файлов созданных в Python2 в файлы Python3. Если True, то pickle попытается отобразить имена Python2, на имена, используемые в Python3.
encoding - строка (необязательный параметр).
Определяет кодировку, используемую при чтении файлов сгенерированных в Python2. Необходим, только при чтении из Python3. Только ‘latin1’, ‘ASCII’ и ‘bytes’ не приводят к искажению данных при чтении. По умолчанию ‘ASCII’.
Возвращает:
результат - массив NumPy, кортеж или словарь
Если данные хранятся в pickle файле (в котором могут храниться абсолютно любые объекты), то возвратится именно тот объект, который в нем сохранен. Если файл формата .npy, то будет возвращен один массив. Для фойлов .npz (который по сути является архивом с множеством файлов массивов) возвращается словарь из пар ключ-значение в формате file_name: array, для каждого файла из архива.

Замечание

Файлы .npz возвращают значение, которое поддерживает протокол менеджера контекстов, точно так же как и при использовании функции open:

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

При выходе из блока with базовый дескриптор файла закрывается.

Смотрите так же:
loadtxt, save, savez, savez_compressed

Примеры

Обратите внимание, что при сохранении одного массива, не обязательно указывать расширение файла, но необходимо при его загрузке:

>>> import numpy as np
>>> 
np.save('example/array_0', np.array([[1, 1, 1], [2, 2, 2]]))
>>>
>>> np.load('example/array_0.npy')
array([[1, 1, 1],
       [2, 2, 2]])

Несколько массивов могут быть сохранены в файле .npz:

>>> 
>>> a = np.array([1, 2, 3])
>>> b = np.array([[11], [22], [33]])
>>> c = np.array([[1, 1, 1], [3, 3, 3]])
>>> 
>>> np.savez('example/array_1', a, b, c)
>>> 
>>> data = np.load('example/array_1.npz')

Загруженный файл представляет собой подобный словарю объект, ключи которого сгенерированы автоматически, а значениями являются хранящиеся в файле массивы:

>>> data.files    #  проверяем имена ключей
['arr_1', 'arr_2', 'arr_0']
>>> 
>>> #  Получаем доступ к массивам:
... data['arr_0']
array([1, 2, 3])
>>> 
>>> data['arr_1']
array([[11],
       [22],
       [33]])
>>> 
>>> data['arr_2']
array([[1, 1, 1],
       [3, 3, 3]])
>>> 
>>> data.close()    #  Закрываем файл

С помощью параметра mmap_mode мы можем получить доступ к фрагментам массива прямо с диска:

>>> a = np.arange(36).reshape(6, 6)
>>> a
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23],
       [24, 25, 26, 27, 28, 29],
       [30, 31, 32, 33, 34, 35]])
>>> 
>>> np.save('example/array_2', a)
>>> 
>>> A = np.load('example/array_2.npy', mmap_mode='r')
>>> 
>>> A[1:5, 1:5]
memmap([[ 7,  8,  9, 10],
        [13, 14, 15, 16],
        [19, 20, 21, 22],
        [25, 26, 27, 28]])
>>> 
>>> b = np.array(A[1:5, 1:5])
>>> b
array([[ 7,  8,  9, 10],
       [13, 14, 15, 16],
       [19, 20, 21, 22],
       [25, 26, 27, 28]])