У меня есть фрагмент кода, который пытается найти содержимое массива по индексам, указанным другим, который может указывать индексы, выходящие за пределы диапазона предыдущего массива.
input = np.arange(0, 5)
indices = np.array([0, 1, 2, 99])
Я хочу сделать следующее: этот: ввод для печати [индексы] и получить [0 1 2]
Но это дает исключение (как и ожидалось):
IndexError: index 99 out of bounds 0<=index<5
Итак, я подумал, что могу использовать замаскированные массивы, чтобы скрыть индексы за пределами границ:
indices = np.ma.masked_greater_equal(indices, 5)
Но все же:
>print input[indices]
IndexError: index 99 out of bounds 0<=index<5
Хотя:
>np.max(indices)
2
Поэтому мне нужно сначала заполнить замаскированный массив, что меня раздражает, поскольку я не знаю, какое значение заполнения я мог бы использовать, чтобы не выбирать какие-либо индексы для тех, которые находятся вне диапазона:
print input [np .ma.filled (index, 0)]
[0 1 2 0]
Итак, мой вопрос: как можно эффективно использовать numpy для безопасного выбора индексов из массива, не выходя за границы входного массива?