Я собираюсь начать с введения в схему / объекты данных HDF5. Вы должны понимать это, чтобы эффективно работать с данными HDF5. Есть 2 основных c сущностей: 1) Группы и 2) Наборы данных. Они похожи на папки и файлы на вашем компьютере. Группы похожи на папки, а наборы данных похожи на файлы, содержащие данные. (Примечание: ни одно из них не является именами столбцов или строк - вы получаете эту информацию, запрашивая каждый набор данных).
Группы используют значок папки в вашем изображении макета файла. У вас есть 2 группы.
Это:
/matrix
/matrix/features
Наборы данных имеют другой значок. У вас есть 10 наборов данных, по 5 сохраненных в каждой группе.
Это:
/matrix/barcodes
/matrix/data
/matrix/indices
/matrix/indptr
/matrix/shape
/matrix/features/_all_tag_keys
/matrix/features/feature_name
/matrix/features/genome
/matrix/features/id
/matrix/features/name
Я создал простой пример для опроса вашей модели и вывода групп / наборов данных. Кроме того, он выводит dtype и форму для наборов данных. Это должно помочь вам прагматично «увидеть» то, что у вас есть, и сравнить с вашим изображением.
- Dtype - это типы данных (int, float, string) и имена полей / столбцов (если они определены).
- Форма зависит от определения набора данных. Для простых массивов NumPy это размерность во всех направлениях. Для смешанных типов данных (массивов записей) это количество строк.
Сегмент кода ниже:
import h5py
def visitor_func(name, node):
if isinstance(node, h5py.Group):
print(node.name, 'is a Group')
elif isinstance(node, h5py.Dataset):
if (node.dtype == 'object') :
print (node.name, 'is an Object Dataset')
else:
print(node.name, 'is a Dataset')
print ('Dataset dtype=', node.dtype)
print ('Dataset shape=', node.shape)
else:
print('Node is unknown type: ', node.name)
print ('testing hdf5 file')
with h5py.File('filtered_feature_bc_matrix.h5','r') as h5f:
h5f.visititems(visitor_func)