Я не уверен насчет h5py, но для numpy я всегда использую slice
.
slices = tuple([batch_idx] + [slice(None)]*(dim))
dataset[slices]
Каждая slice(None)
эквивалентна одной из точек с запятой, поэтому вам просто нужно составить списокиз них, что соответствует количеству измерений у вас есть.Таким образом, если dim равен 1, приведенный выше код будет собирать фрагменты одномерных данных, если dim равен 3, он будет собирать фрагменты трехмерных данных и т. Д. Если вы хотите выполнять более сложные нарезки, вы можете, например, использовать slice(3,10,2)
заменить 3:10:2
в n-мерном срезе.Надеюсь, это поможет!