Я пытаюсь решить вопрос определения поведения вне границ для индексирования массивов. Предыдущий вопрос см .: Как я могу динамически векторизовать замену значений массива другим (меньшим) массивом?
Если у меня есть следующие примеры данных:
array_large = [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]
array_small = [[1,2],[3,4],[5,6]]
array_index = [[1],[4],[5]] #*random index
Использование этого кода
i = np.arange(array_large.shape[0])[:,None]
j = array_index+np.arange(array_small.shape[1])
array_large[i,j] = array_small
Поведение для array_index [0] понятно, но если индекс превышает целевой массив, возникает ошибка. Я хотел бы игнорировать недопустимый индекс, но индексировать как можно меньший массив в больший. Как я могу обработать эти ошибки при условии, что желаемый результат будет:
array_large = [[0,1,2,0,0],[0,0,0,0,3],[0,0,0,0,0]]