• 1000 операция, но без обращения времени одной из функций.
Итак, в моем исходном проекте java я просто написал весь код, чтобы выполнить операцию самостоятельно, так как я работаю в python, и у него есть отличные математические библиотеки, такие как numpy и scipy, я подумал, что могу просто использовать существующую функцию свертки, например scipy.convolve
. Однако это потребовало бы, чтобы я предварительно перевернул один из двух массивов, чтобы, когда scipy.convolve
запускается и меняет один из массивов для выполнения свертки, он действительно не реверсирует массив. (Я также до сих пор не знаю, как я могу быть уверен, что предварительно переверну правый из двух массивов, чтобы два массива по-прежнему скользили друг мимо друга вперед, а не назад, но я предполагаю, что я должен спросить об этом как отдельный вопрос.)
В отличие от моего java кода, который обрабатывал только одномерные данные, я хотел расширить этот проект до многомерных данных. Итак, хотя я узнал, что если бы у меня был массив numpy известной размерности, такой как трехмерный массив a, я мог бы полностью перевернуть массив (или, скорее, вернуть обратное представление, что намного быстрее) , by
a = a(::-1, ::-1, ::-1)
Однако для этого мне нужно иметь ::-1
для каждого измерения. Как я могу выполнить такое же обращение в методе для массива произвольной размерности, который имеет тот же результат, что и приведенный выше код?