#python #numpy
#python #numpy
Вопрос:
Мне нужно использовать файл .npz для проекта и при чтении его как такового:
import matplotlib
matplotlib.use('Agg')
import numpy
import random
import matplotlib.pyplot as plt
data = numpy.load('data.npz')
lst = data.files
никаких проблем не возникает. Однако, как только я добавлю что-то, что его использует, например
subset = (data['arr_0'][1:100, :, :, :]
или произвольная выборка (поскольку она очень большая (180 000 x 5 x 10 x 10), и я хочу использовать только подмножество), для завершения требуется вечность.
Есть ли способ загрузить только первую часть или случайные выборки в разумные сроки?
Комментарии:
1.
np.load
изnpy
файла принимаетmmap_mode
параметр, который позволяет ему считывать фрагмент массива из файла, не загружая его целиком. Но это недоступно дляnpz
файлов.npz
это zip-архив.data
это словарь, ссылающийся на этот архив.data['arr_0']
извлекает этот файл из архива и загружает его.2. Сначала извлеките
arr_0
файл изnpz
архива (например, с помощью инструмента zip-оболочки) и выполнитеload
сmmap_mode
помощью, чтоarr_0.npy
может работать и быть быстрее.