numpy: как я могу использовать матричные элементы в качестве индекса?

#python #numpy #indexing

#python #numpy #индексирование

Вопрос:

У меня есть числовая матрица целых чисел, элементы которой представляют индексы. Я хотел бы создать матрицу того же размера, элементы которой взяты из списка по соответствующему индексу.

 import numpy as np

matrix = np.array([[0, 1, 1], [2, 0, 1]], dtype=int)
matrix

# array([[0, 1, 1],
#        [2, 0, 1]])

values = [7, 8, 9]

values[matrix]  # gives 'ValueError: can only convert an array of size 1 to a Python scalar'
  

Ожидаемый результат:

     # array([[7, 8, 8],
    #        [9, 7, 8]])
  

Как я могу сделать это в numpy?

Ответ №1:

Хорошо, я только что узнал, что я работаю так, как ожидалось, когда values также np.ndarray вместо списка. Итак, это работает:

 import numpy as np

matrix = np.array([[0, 1, 1], [2, 0, 1]], dtype=int)
matrix

# array([[0, 1, 1],
#        [2, 0, 1]])

values = np.array([7, 8, 9])

values[matrix]