Учитывая, что arr2
является одномерным массивом, вы можете написать это как:
arr1 = arr2[arr1]
Здесь мы, таким образом, делаем поэлементное «отображение», где новое arr1[i, j]
- это значение, которое соответствует значению индекса в arr2
, сохраненному для старого значения arr1[i, j]
.
Например:
>>> a
array([[ 3, 15, 3, 15, 5],
[ 8, 17, 14, 10, 1],
[ 3, 8, 9, 0, 1],
[10, 3, 10, 9, 1]])
>>> b
array([17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,
0])
>>> b[a]
array([[14, 2, 14, 2, 12],
[ 9, 0, 3, 7, 16],
[14, 9, 8, 17, 16],
[ 7, 14, 7, 8, 16]])
Здесь для индекса i
, b[i] = 17 - i
мы видим, что это отображение выполняется при вычислении b[a]
.
В случае, если arr1
содержит значение, которое не является допустимым индексом, это, однако, логически приведет к IndexError
.