Самый быстрый способ создания сопоставленной матрицы в NumPy - PullRequest
0 голосов
/ 06 ноября 2018

У меня следующая проблема. У меня есть двумерная матрица целых чисел, скажем, они находятся в диапазоне 0-19. Матрица имеет форму (r, c). Назовите эту матрицу M. У меня есть дополнительный массив, справочная таблица, A, длиной 19, элементы которого представляют собой небольшие кусочки векторов, каждый из которых имеет длину N. Я хочу создать новую матрицу формы (r, c, N) где я заменил целое число в исходной матрице его аналогом таблицы поиска.

Достаточно просто, это просто функция в матрице, которая создает новую матрицу с дополнительным измерением. Я написал код для этого, который выглядит так:

num_rows, num_cols = M.shape
result = np.zeros(num_rows, num_cols, 3)

for col in range(num_cols):
    for row in range(num_ros):
        idx = M[row, col]
        result[row, col] = np.array(A[idx])

Это работает, но проблема в том, что это слишком медленно. Если M имеет 500 000 элементов, то это занимает около 600 мс на матрицу, что является узким местом в моем коде. Должен быть хитрый способ справиться с этим, который быстрее, но я не могу думать об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...