РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
149 of 541 menu

Функция convolve

Функция convolve вычисляет дискретную свертку двух одномерных массивов. Первым параметром передается массив a, вторым - массив v. Третьим параметром можно задать режим свертки: 'full', 'same' или 'valid'. Режим определяет размер выходного массива. Функция возвращает одномерный массив свертки.

Синтаксис

np.convolve(a, v, mode='full')

Параметры функции:

  • a - первый одномерный массив (сигнал);
  • v - второй одномерный массив (ядро свертки);
  • mode - необязательный строковый параметр, определяющий размер вывода:
    • 'full' - полная свертка (по умолчанию);
    • 'same' - результат той же длины, что и массив a;
    • 'valid' - только те точки, где массивы полностью перекрываются.

Пример с режимом 'full'

Выполним полную свертку двух массивов:

import numpy as np a = np.array([1, 2, 3]) v = np.array([4, 5, 6]) res = np.convolve(a, v, mode='full') print(res)

Результат выполнения кода:

[ 4 13 28 27 18]

В режиме 'full' выходная длина равна len(a) + len(v) - 1.

Пример с режимом 'same'

Получим свертку той же длины, что и первый массив:

import numpy as np a = np.array([1, 2, 3, 4, 5]) v = np.array([1, 0, -1]) res = np.convolve(a, v, mode='same') print(res)

Результат выполнения кода:

[ 2 2 2 2 -4]

Режим 'same' часто используется для фильтрации сигналов.

Пример с режимом 'valid'

Выполним свертку только для полностью перекрывающихся частей:

import numpy as np a = np.array([1, 2, 3, 4, 5]) v = np.array([1, 0, 1]) res = np.convolve(a, v, mode='valid') print(res)

Результат выполнения кода:

[ 4 6 8]

Выходная длина в режиме 'valid' равна len(a) - len(v) + 1.

Пример применения в скользящем среднем

Сгладим сигнал с помощью свертки с ядром усреднения:

import numpy as np signal = np.array([10, 12, 11, 13, 15, 14, 16]) window = np.ones(3) / 3 smoothed = np.convolve(signal, window, mode='same') print(smoothed)

Результат выполнения кода:

[11. 11. 12. 13. 14. 15. 10.66666667]

Полученный массив - сглаженная версия исходного сигнала.

Пример с разными типами данных

Функция поддерживает массивы с целыми и вещественными числами:

import numpy as np a = np.array([1.5, 2.5, 3.5]) v = np.array([0.5, 0.5]) res = np.convolve(a, v, mode='full') print(res)

Результат выполнения кода:

[0.75 2. 3. 1.75]

Смотрите также

  • функцию diff,
    которая вычисляет разности между соседними элементами массива
  • функцию gradient,
    которая возвращает градиент N-мерного массива
  • функцию ediff1d,
    которая вычисляет разности между элементами одномерного массива
  • функцию interp,
    которая выполняет одномерную линейную интерполяцию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить