0
大きな.h5ファイルからいくつかの「行」を抽出して、より小さなサンプルファイルを作成しようとしています。複数のデータセットで.hdf5ファイルをサブサンプリングする
私のサンプルが元のファイルのように見えるように、私はランダムに行を抽出しています。
#Get length of files and prepare samples
source_file = h5py.File(args.data_path, "r")
dataset = source_file['X']
indices = np.sort(np.random.choice(dataset.shape[0],args.nb_rows))
#checking we're extracting a subsample
if args.nb_rows > dataset.shape[0]:
raise ValueError("Can't extract more rows than dataset contains. Dataset has %s rows" % dataset.shape[0])
target_file = h5py.File(target, "w")
for k in source_file.keys():
dataset = source_file[k]
dataset = dataset[indices,:,:,:]
dest_dataset = target_file.create_dataset(k, shape=(dataset.shape), dtype=np.float32)
dest_dataset.write_direct(dataset)
target_file.close()
source_file.close()
しかし、nb_rowsが(10,000のような)場合、私はTypeError("Indexing elements must be in increasing order")
を得ています。インデックスはソートされているので、このエラーは発生しないはずです。私は何かを誤解していますか?