Нет пути конвертации для проблемы dtype ('<U1')

1

У меня есть 2d-список (Data_set), который содержит 3d-массив и метку (0 или 1), я хочу сделать файл h5py с двумя наборами данных один для трехмерного массива, а другой для метки, это мой код для этого: '

    data = []
    label = []
    for i in range(len(Data_set)):
        data.append(Data_set[i][0])# 3d array
        label.append(Data_set[i][1])#label
    data = np.array(data)
    label = np.array(label)
    dt = np.dtype('int16')
    with h5py.File(output_path+'dataset.h5', 'w') as hf:
        hf.create_dataset('data',dtype=dt ,data=data, compression='lzf')
        hf.create_dataset('label', dtype=dt, data=label, compression='lzf')

'содержимое списка 2d показано на рисунке ниже: Изображение 174551, но когда я запускаю код, он дает мне ошибку: см. изображение ниже Изображение 174551, пожалуйста, помогите мне решить проблему?

  • 1
    Когда вы предоставляете параметр data вам не нужно устанавливать dtyoe . Это может сделать вывод из data собственного dtype.
  • 1
    label.astype('S1') также работает - он может сохранять строки байтов, но не в Unicode (по умолчанию для PY3), по крайней мере, напрямую.
Теги:
numpy
python-3.x
hdf5
h5py

1 ответ

1
Лучший ответ

Ваши метки не являются целыми числами, они являются строками, что является проблемой для HDF5. Ваше сообщение об ошибке относится к массиву, состоящему из строк длины 1. Для получения более подробной информации см. Строки в HDF5.

Вы можете преобразовать в целые числа до или после создания вашего массива NumPy, вот несколько примеров:

label = np.array(label).astype(int)
# or, label = np.array(list(map(int, label)))

В качестве альтернативы, поскольку ваши значения равны 0 или 1, выбор bool может быть более эффективным:

label = np.array(label).astype(int).astype(bool)

Кроме того, рассмотрите возможность хранения метаданных в качестве атрибутов.

  • 0
    спасибо за ваш повтор, я думаю, что bool не подходит для меня, потому что мне нужны 0 и 1 для моего лейбла. Что вы подразумеваете под «рассматривать метаданные как атрибуты»?
  • 1
    Для атрибутов, я предлагаю вам посмотреть на атрибуты в h5py документах . Идея состоит в том, что данные располагаются в наборах данных, а атрибуты - в атрибутах. Атрибуты похожи на наборы данных, но могут быть присоединены к группе или набору данных и всегда читаются сразу.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню