Используйте Python Numpy для эффективного управления данными файлов HDF5.
Используйте Python Numpy для эффективного управления данными файлов HDF5.

Формат файлов HDF5 (иерархический формат данных версии 5) широко используется благодаря своим эффективным возможностям хранения и обработки. HDF5 поддерживает иерархическую структуру.,Возможность хранить и управлять крупномасштабными многомерными наборами данных в одном файле. Хотя библиотека Numpy в Python славится численными расчетами,Но с помощью внешних библиотек, таких какh5py,Файлы HDF5 можно легко преобразовать и пишидействовать。В этой статье будет подробно описано, как использоватьNumpyобъединитьh5pyБиблиотека Читай и пишиHDF5документ,Подходит для пользователей, которым необходимо обрабатывать крупномасштабные наборы данных.

Знакомство с файлами HDF5

HDF5 — это формат файла, который поддерживает иерархическое хранение данных, позволяя пользователям хранить несколько наборов данных и метаданные в одном файле. Каждый файл HDF5 аналогичен файловой системе и может содержать несколько «групп» и «наборов данных». Каждая группа аналогична папке, а каждый набор данных аналогичен файлу.

По сравнению с CSV и двоичными файлами преимущества файлов HDF5 в основном отражаются в:

  1. эффективное хранение:Поддержка крупномасштабных многомерныхданныеиз Сжатое хранилище。
  2. произвольный доступ:Доступен напрямуюдокументсерединаизидентификацияданныечасть,Избегайте загрузки всего файла.
  3. Поддержка метаданных:Может хранить обильноеиз Юаньданные,Легкоорганизуемые и управляемые.

Установитьh5pyБиблиотека

Чтобы использовать файлы HDF5,первая необходимость Установитьh5pyБиблиотека。

Для установки используйте следующую команду:

Язык кода:javascript
копировать
pip install h5py

После завершения установки,может пройтиimport h5pyпредставить Библиотека,иобъединитьNumpyруководитьHDF5Документальный фильм Читай и пишидействовать。

Создание и сохранение файлов HDF5.

Файлы HDF5 структурированы как файловая система, содержащая «группы» и «наборы данных». Группы эквивалентны папкам и могут содержать другие группы или наборы данных, в которых хранятся определенные данные;

Создайте файл HDF5 и запишите данные.

Сначала создайте новый файл HDF5 и сохраните в нем массив Numpy как набор данных.

Язык кода:javascript
копировать
import numpy as np
import h5py

# Создайте файл HDF5.
with h5py.File('data.h5', 'w') as f:
    # Создайте набор данных для хранения массивов Numpy.
    data = np.arange(100).reshape(10, 10)
    f.create_dataset('dataset_1', data=data)

    # Создайте группу и внутри группы создайте еще один набор данных.
    group = f.create_group('my_group')
    group.create_dataset('dataset_2', data=np.random.rand(5, 5))

print("данные успешно сохранены в файл HDF5")

В этом коде,использоватьh5py.File()Создал файл под названиемdata.h5изHDF5документ,и пройтиcreate_dataset()ВоляNumpyМассив сохраняется какданныенабор。Также создал группуmy_group,И внутри этой группы хранится еще один набор данных.

Установить свойства набора данных

Файлы HDF5 могут не только хранить данные, но и добавлять в набор данных атрибуты, аналогичные метаданным для файлов.

Язык кода:javascript
копировать
with h5py.File('data_with_attrs.h5', 'w') as f:
    # Создайте набор данных и установите свойства.
    dataset = f.create_dataset('dataset_with_attrs', data=np.arange(10))
    dataset.attrs['description'] = «Это пример набора данных»
    dataset.attrs['version'] = 1.0

print("Набор данных с атрибутами сохранен")

проходитьdataset.attrsможет бытьHDF5данныенабор Добавить пользовательские свойства,Удобно записывать описание данных.

Чтение файлов HDF5

Файлы HDF5 поддерживают произвольный доступ, который обеспечивает прямой доступ к определенным наборам данных или группам без загрузки всего файла. Это делает HDF5 превосходным средством обработки крупномасштабных данных.

Чтение файлов HDF5серединаизданные

может пройтиh5py.File()Открыть существующийизHDF5документ,И прочитайте в нем наборы и группы данных.

Язык кода:javascript
копировать
with h5py.File('data.h5', 'r') as f:
    # Прочитайте первый набор данных в корневом каталоге.
    dataset_1 = f['dataset_1'][:]
    print("Набор данных_1 прочитано:\n", dataset_1)

    # Прочитайте набор данных внутри группы.
    dataset_2 = f['my_group/dataset_2'][:]
    print("Набор данных_2 прочитано:\n", dataset_2)

В этом примере,читатьHDF5документсерединаиздваданныенабор。f['dataset_1'][:]значит прочитать всюданныенабор,И если объем данных большой,Вы также можете прочитать только часть данных.,Например f['dataset_1'][0:5] Прочитайте первые 5 строк.

Чтение свойств набора данных

Если набор данных содержит свойства, эти свойства также можно легко прочитать.

Язык кода:javascript
копировать
with h5py.File('data_with_attrs.h5', 'r') as f:
    # Чтение набора данных с атрибутами
    dataset = f['dataset_with_attrs']
    description = dataset.attrs['description']
    version = dataset.attrs['version']

    print("описание данного набора:", description)
    print("данные заданные версии:", version)

проходитьdataset.attrs,Обеспечивает легкий доступ к метаданным, хранящимся в коллекции данных.

Эффективное хранение данных файлов HDF5.

Файлы HDF5 не только поддерживают простое хранение данных, но также предоставляют расширенные функции, такие как сжатие и нарезка, что обеспечивает эффективное хранение и обработку крупномасштабных наборов данных.

Используйте сжатие для хранения данных

Чтобы сэкономить место для хранения,HDF5Поддержка сохраненияданныечасруководитьсжатие。compression Параметры могут выбрать алгоритм сжатия,нравитьсяgziplzfждать。

Язык кода:javascript
копировать
with h5py.File('compressed_data.h5', 'w') as f:
    # Создайте сжатый набор данных
    data = np.random.rand(1000, 1000)
    f.create_dataset('compressed_dataset', data=data, compression='gzip')

print("Сжатый набор данных сохранен")

проходитьcompression='gzip',коллекцию данных можно сжать и сохранить,Это очень полезно при работе с крупномасштабными данными.

Храните данные и получайте к ним доступ по частям

HDF5 поддерживает разделение наборов данных на блоки.,便于高效访问идентификациячастьданные。chunks Параметр используется для указания размера блока набора данных.

Язык кода:javascript
копировать
with h5py.File('chunked_data.h5', 'w') as f:
    # Создайте фрагментированный набор данных
    data = np.random.rand(1000, 1000)
    f.create_dataset('chunked_dataset', data=data, chunks=(100, 100))

print("Набор данных по частям сохранен")

В этом случае набор данных разбивается на блоки размером 100x100, что улучшает доступ к локальным данным.

Прочитайте некоторые данные

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

Язык кода:javascript
копировать
with h5py.File('data.h5', 'r') as f:
    # Прочтите только первые 5 строк набора данных.
    partial_data = f['dataset_1'][0:5]
    print("Читать данные части:\n", partial_data)

Благодаря операции нарезки можно прочитать только необходимую часть данных, тем самым уменьшая использование памяти.

Управление несколькими наборами данных и группами

Файлы HDF5 поддерживают сложные иерархии и могут управлять несколькими наборами данных через группы. Группы аналогичны папкам и могут содержать другие группы или наборы данных, помогающие организовывать данные и управлять ими.

Создание нескольких групп и наборов данных

Язык кода:javascript
копировать
with h5py.File('grouped_data.h5', 'w') as f:
    # Создать группу
    group_a = f.create_group('group_a')
    group_b = f.create_group('group_b')

    # Создать набор данных в группе a
    group_a.create_dataset('data_a1', data=np.arange(10))
    group_a.create_dataset('data_a2', data=np.random.rand(5))

    # Создать набор данных в группе b
    group_b.create_dataset('data_b1', data=np.random.rand(3, 3))

print("Было создано несколько групп и наборов данных")

Таким образом, в одном файле HDF5 можно эффективно управлять несколькими наборами данных и группами.

Подвести итог

В этой статье подробно рассказываетсянравитьсячтоиспользоватьPythonизNumpyБиблиотекаобъединитьh5pyиметь дело сHDF5документ,Охватывает общие операции, такие как создание файлов HDF5, чтение и запись, сжатое хранилище и блочный доступ. Преимущества формата файлов HDF5 в крупномасштабной обработке данных очевидны.,Особенно это поддерживает эффективное хранение、произвольный доступи богатыйиз Юаньданные,Это делает его важным инструментом в таких областях, как наука о данных и машинное обучение. Путем правильного использования файлов HDF5,Может повысить эффективность хранения и обработки при обработке крупномасштабных наборов данных.,Удобен для управления сложной структурой данных.

Если вы считаете, что статья хороша, поставьте лайк, поделитесь ею и оставьте сообщение, потому что это будет для меня самой сильной мотивацией продолжать выпускать больше качественных статей!

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose