Допустим, у меня есть массив NumPy:
x = np.array([[0, 5],
[1, 6],
[4, 3],
[2, 4],
[3, 2]])
и массив «поиска», который сообщает мне, как сопоставить одно целое число (первый столбец) другому (второй столбец):
lookup = np.array([[0, 50],
[1, 16],
[2, 47],
Итак, 0 -> 50
, 1 -> 16
и 2 -> 47
. Обратите внимание, что целые числа [3, 4, 5, 6]
не используются при поиске и поэтому не нуждаются в изменении. Простой способ сделать это:
for i in range(lookup.shape[0]):
num = lookup[i, 0]
x[x == num] = lookup[i, 1]
И ожидаемый результат должен быть:
np.array([[50, 5],
[16, 6],
[4, 3],
[47, 4],
[3, 47]])
Для большого 2D-массива x
и гораздо большего lookup
это есть более эффективный способ сделать это векторизованным способом в NumPy?