У меня есть большой файл h5 (50 ГБ). Мне нужно извлечь квадратную подматрицу из файла. Пока мой код:
import h5py
import random
file = h5py.File('numDistances.h5', 'r')
data = file['DS1'] # 120,000 x 120,000 matrix
randomRows = random.sample(range(110000), 40000)
randomRows.sort()
# Get the rows first and then the corresponding columns:
rows = data[randomRows, :]
output = rows[:,randomRows]
К сожалению, извлечение данных таким образом происходит очень медленно. Знаете ли вы какие-либо методы нарезки/дополнительные библиотеки, которые могли бы помочь мне сделать это намного быстрее, спасибо.
randomRows
разбросан по большому файлу, ему придется много работать с файломseek
. docs.h5py.org/en/latest/high/dataset. html#fancy-indexing. Может помочь использование небольших выборок, которые объединяются в фрагменты, docs.h5py. org/en/latest/high/dataset.html#chunked-storage - person hpaulj   schedule 30.12.2017