С учетом наших данных
import numpy as np
data = np.ones((2,3,4))
idx = [[0,1], [1,2], [0, 100]]
shape = np.array(data.shape)
Вы можете получить любой столбец индекса, который выходит за пределы вашего исходного массива, используя
invalids = np.any(idx > shape[:, None] - 1, axis=0)
, и обрезать ваши индексы до допустимых значений, используя
* 1008.*
эти признаки могут использоваться для индексации нашего массива
out = data[valids.tolist()]
, а маска недопустимых индексов может использоваться для установки выбросов на nan
out[invalids] = np.nan
# array([ 1., nan])