Эффективный способ переписать строки матрицы в NumPy - PullRequest
0 голосов
/ 11 мая 2018

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

Любые предложения о том, как выполнить ту же операцию более эффективным способом?

matr = np.zeros((178858, 400))

for key, index in values.items():
    vect = get_vector(key)
    matr[index] = vect

get_vector возвращает вектор длиной 400 с заданным ключом.

values ​​- это словарь, содержащий ключ (строку) и индекс (целое число) для этого ключа.

1 Ответ

0 голосов
/ 11 мая 2018

Возможный подход заключается в использовании расширенного индексирования с нуля, который может быть быстрее (values должен быть заказан, поэтому не будет работать на Python 3.0 - 3.5)

indices = np.fromiter(values.values(), dtype=int, count=len(values))
keys = np.array([get_vector(v) for v in values.keys()])

matr[indices] = keys
...