При частом чтении числовых файлов, таких как данные для обработки глубокого обучения, преобразуйте исходные данные в данные в формате Numpy, а затем используйте Numpy для прямого чтения, что может ускорить скорость чтения данных и сократить время загрузки данных. Ниже приводится введение в часто используемые способы сохранения и чтения данных:
numpy.save()
Сохраните массив в двоичный файл, формат сохранения — .npy.
Введение параметра
numpy.save(file, arr, allow_pickle=True, fix_imports=True)
файл: имя файла/путь к файлу
arr: массив для хранения
allow_pickle: логическое значение, позволяет использовать пиклы Python для сохранения массивов объектов (необязательный параметр, по умолчанию)
fix_imports: для облегчения чтения данных, сохраненных Python3 в Pyhton2 (необязательный параметр, по умолчанию — OK)
пример:
import numpy as np
#генерировать данные
x = np.arange(10)
print(x)
#сохранять данные
np.save('save_x',x)
Выходной результат:
2. numpy.savez
Это также сохраняет массив в двоичный файл, но замечательно то, что он может сохранять несколько массивов в один и тот же файл, а формат сохранения — .npz, который на самом деле является сохраненным npy из нескольких предыдущих np.save. Затем поместите эти файлы в один файл путем упаковки (несжатого), если нет, вы узнаете, распаковав файл npz, который содержит несколько сохраненных вами npy.
Введение параметра
numpy.savez(file, *args, **kwds)
файл: имя файла/путь к файлу
* args: массив для хранения, вы можете написать несколько, если для массива не указан ключ, Numpy назовет его от «arr_0», «arr_1» по умолчанию
kwds: (необязательный параметр, значение по умолчанию)
пример:
import numpy as np
x = np.arange(10)
print(x)
y=np.sin(x)
print("保存前的数据:")
print(x,y)
np.savez('save_xy',x,y)
npzfile=np.load('save_xy.npz')
xx=npzfile['arr_0']
yy=npzfile['arr_1']
print("保存后的数据:")
print(xx,yy)
Выходной результат:
Вы также можете самостоятельно определить ключ для массива вместо ключа, который Numpy по умолчанию использует для массива. пример:
import numpy as np
x = np.arange(10)
print(x)
y=np.sin(x)
print("保存前的数据:")
print(x,y)
np.savez('save_xy',x=x,y=y)
npzfile=np.load('save_xy.npz')
xx=npzfile['x']
yy=npzfile['y']
print("保存后的数据:")
print(xx,yy)
Выходной результат:
При глубоком обучении с указанными выше навыками вы сохраняете обучающий набор, тестовый набор и набор проверки в виде файлов формата Numpy, что значительно повышает скорость загрузки.
Numpy.savez_compressed
Добавлено сжатие на основе numpy.savez, а сжатие используется при упаковке файлов.Можно понять, что размер файла каждого npy перед сжатием неизменен, и файл npz, полученный с помощью этой функции, меньше, чем предыдущий numpy.savez.
Примечание. Параметры, требуемые функцией, такие же, как у numpy.savez, и использование такое же.
пример:
import numpy as np
x = np.arange(10)
print(x)
y=np.sin(x)
print("保存前的数据:")
print(x,y)
np.savez_compressed('save_xy',x=x,y=y)
npzfile=np.load('save_xy.npz')
xx=npzfile['x']
yy=npzfile['y']
print("保存后的数据:")
print(xx,yy)
Выходной результат:
Numpy.savetxt
Сохраните массив в текстовый файл, вы можете напрямую открыть и просмотреть содержимое файла.
Введение параметра
numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ', encoding=None)
fname: имя файла/путь к файлу, если расширение файла .gz, файл будет автоматически сохранен в формате .gzip, который может быть распознан np.loadtxt
X: массив 1D или 2D для хранения
fmt: управляет форматом хранения данных
разделитель: разделитель между столбцами данных
новая строка: разделитель между строками данных
заголовок: строка, записанная на шаге заголовка файла
нижний колонтитул: строка, написанная внизу файла
комментарии: начальный символ строки заголовка или конца файла, по умолчанию '#'
кодировка: использовать параметры по умолчанию
пример:
import numpy as np
x = np.arange(10)
#保存数据
np.savetxt('test.out', x)
np.savetxt('test1.out', x,fmt='%1.4e')
np.savetxt('test2.out', x, delimiter=',')
np.savetxt('test3.out', x,newline='a')
np.savetxt('test4.out', x,delimiter=',',newline='a')
np.savetxt('test5.out', x,delimiter=',',header='abc')
np.savetxt('test6.out', x,delimiter=',',footer='abc')
Выходной результат:
Numpy.loadtxt
В соответствии с ранее настроенным форматом сохранения также необходимо изменить соответствующую функцию загрузки данных.
Введение параметра
numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding='bytes')
fname: имя файла/путь к файлу, если расширение файла .gz или .bz2, файл будет распакован, а затем загружен
dtype: тип данных для чтения
комментарии: начальный символ строки заголовка или конца файла, используемый для идентификации строк начала и окончания.
разделитель: разделите строку, которая читает значение
преобразователи: разделитель между строками данных
....... Я не буду писать те, которые обычно не используются, позже.
пример:
np.loadtxt('test.out')
np.loadtxt('test2.out', delimiter=',')
Справочная статья