#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]