Используйте 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
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода