#python #numpy
#python #numpy
Вопрос:
Дана таблица поиска:
colors = [ [0,0,0],
[0, 255, 0],
[0, 0, 255],
[255, 0, 0]]
И ввод матрицы numpy с индексом 2×2:
a = np.array([[0,1],[1,1]])
Как я могу сопоставить a с матрицей 2x2x3 b, где b[i][j] = colors[a[i][j]]
? Я хочу избежать использования цикла for здесь.
Ответ №1:
А вы пробовали:
colors[a]
Вот полный пример:
import numpy as np
colors = np.array([[0,0,0],
[0, 255, 0],
[0, 0, 255],
[255, 0, 0]
])
a = np.array([[0, 1], [1, 1]])
new = colors[a]
new.shape
# (2, 2, 3)
new
# array([[[ 0, 0, 0],
# [ 0, 255, 0]],
#
# [[ 0, 255, 0],
# [ 0, 255, 0]]])
Комментарии:
1. Обратите внимание, что вы переопределяете цвета здесь, используя массив numpy, в противном случае вы получите сообщение об ошибке с «OP colors».
2. @agstudy, очень верно. Если
colors
это список списков, вы можете индексировать его только с помощью фрагментов или целых чисел.