У меня есть очень большой Numpy массив (содержащий до миллиона элементов), как показано ниже:Быстрая замена значений в Numpy массиве
[ 0 1 6 5 1 2 7 6 2 3 8 7 3 4 9 8 5 6 11 10 6 7 12 11 7
8 13 12 8 9 14 13 10 11 16 15 11 12 17 16 12 13 18 17 13 14 19 18 15 16
21 20 16 17 22 21 17 18 23 22 18 19 24 23]
и небольшой словарь карты для замены некоторых элементов в вышеуказанная матрица
{4: 0, 9: 5, 14: 10, 19: 15, 20: 0, 21: 1, 22: 2, 23: 3, 24: 0}
Я бы хотел заменить некоторые элементы в соответствии с приведенной выше картой. Массив numpy действительно большой, и только небольшое подмножество элементов (встречающихся как ключи в словаре) будет заменено соответствующими значениями. Каков самый быстрый способ сделать это?
'numpy.place' Я думаю ... – katrielalex
Итерации, подобные' for k in d', сделают это как можно быстрее' – jamylak
Проголосовать против 'numpy.place', как упоминалось @katrielalex, поскольку он просто потратил впустую около двадцати тридцать часов моего времени, будучи багги; по-видимому, его использование, соответственно, обескуражено. «Обычно я предлагаю использовать« np.copyto »или (в данном случае) логическую индексацию, чтобы добиться того же и избежать« np.place »или« np.putmask ». Я понимаю, что в некоторых случаях эти функции не совсем 1: 1 заменяется ими ». FWIW У меня не было этой ошибки, но еще одна, где она просто не работала. – ijoseph