У меня есть два буферизированных массива numpy (a
и b
). Мне нужно найти, сколько их элементов равны. В настоящее время я делаю len(a) - (a^b).sum()
, но операция xor создает совершенно новый массив numpy, как я понимаю. Как эффективно реализовать это желаемое поведение без создания ненужного временного массива?Вычислить сумму результатов оператора без выделения ненужного массива
Я пробовал использовать numexpr, но я не могу заставить его работать правильно. Он не поддерживает идею, что True равен 1, а False - 0, поэтому я должен использовать ne.evaluate("sum(where(a==b, 1, 0))")
, что занимает примерно в два раза больше.
Редактировать: Я забыл упомянуть, что один из этих массивов на самом деле представляет собой представление другого массива другого размера, и оба массива должны считаться неизменяемыми. Оба массива 2-мерные и имеют размер около 25x40.
Да, это узкое место моей программы и стоит оптимизировать.
Мне кажется необычным, что это ваше узкое место, а не то, что генерирует входные данные для эту часть вашего кода. Откуда берутся 'a' и' b'? – user2357112
На это приходится примерно 30% времени выполнения моей общей программы. Я ищу буквы в изображении. У меня 62 небольших изображения, и я проверяю, сколько пикселей у них общее с большим изображением в нескольких местах. – Ponkadoodle