• Автор записи:
  • Рубрика записи:Scipy
  • Время чтения:5 минут чтения
  • Комментарии к записи:0 комментариев

В Scipy есть метод convolve1d() внутри модуля scipy.ndimage, который вычисляет одномерную свертку по указанной оси с предоставленными весами.

Синтаксис:

scipy.ndimage.convolve1d(input, weights, axis=- 1, output=None, mode='reflect', cval=0.1, origin=1)

Где параметры:

  • input (array): это данные массива в качестве входных данных.
  • Weights  (ndarray): это одномерная последовательность чисел.
  • axis (int): этот параметр представляет ось данного массива, по которой можно вычислить свертку.
  • output (dtype, array): используется для указания типа данных возвращаемого массива в качестве вывода.
  • mode(): используется для управления границами входного массива, когда мы хотим расширить его границу. Доступны следующие режимы: перенос, постоянный, ближайший, зеркальный и отраженный.
  • cva l(скаляр): используется для заполнения прошлых границ входного массива, когда режим установлен на константу.
  • origin (int): используется для помещения фильтра в данный входной массив. Если значение равно нулю, то фильтр помещается в центр. Если значение положительное, поместите фильтр слева, а если значение отрицательное, поместите фильтр справа.

Давайте разберемся на примере, выполнив следующие шаги:

  • Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
from scipy import ndimage
  • Создайте массив с несколькими значениями и весами, используя приведенный ниже код Python.
a = [4,6,3,5,6,0,9]
w = [2,6]
  • Теперь передайте созданный выше массив и веса в метод convolve1d.
ndimage.convolve1d(a,weights=w)

Сципи Свертка 1d

Содержание

Свертка 2d

В Scipy есть метод convolve() в модуле scipy.ndimage, который вычисляет многомерную свертку по указанной оси с предоставленными весами.

Синтаксис:

scipy.ndimage.convolve(input, weights, axis=- 1, output=None, mode='reflect', cval=0.1, origin=1)

Где параметры:

  • input (array): это данные массива в качестве входных данных.
  • Weights (ndarray): Массив весов должен иметь размерность, равную размерности входного массива.
  • axis (dtype, array): используется для указания типа данных возвращаемого массива в качестве вывода.
  • mode (): используется для управления границами входного массива, когда мы хотим расширить его границу. Доступны следующие режимы: перенос, постоянный, ближайший, зеркальный и отраженный.
  • cval (скаляр): используется для заполнения прошлых границ входного массива, когда режим установлен на константу.
  • origin (int): используется для помещения фильтра в данный входной массив. Если значение равно нулю, то фильтр помещается в центр. Если значение положительное, поместите фильтр слева, а если значение отрицательное, поместите фильтр справа.

Давайте разберемся на примере, выполнив следующие шаги:

  • Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
from scipy import ndimage
import numpy as np
  • Создайте двумерный массив с несколькими значениями и весами, используя приведенный ниже код Python.
array_data = np.array([(5,4,6,8),(1,0,7,4)])
weight = np.array([[0,0,1],[1,1,1]])
  • Теперь передайте созданный выше двумерный массив и веса в метод свертки.
ndimage.convolve(array_data,weights=weight,cval=0.1,mode='constant')

Свертка 2d

Свертка 3d

В Scipy есть метод convolve() в модуле scipy.ndimage, который вычисляет многомерную свертку.

Здесь мы будем использовать тот же метод с трехмерным массивом, который мы использовали в предыдущем подразделе.

Синтаксис:

scipy.ndimage.convolve(input, weights, axis=- 1, output=None, mode='reflect', cval=0.1, origin=1)

Где параметры:

  • input (array): это данные массива в качестве входных данных.
  • Weights (ndarray): Массив весов должен иметь размерность, равную размерности входного массива.
  • axis (dtype, array): используется для указания типа данных возвращаемого массива в качестве вывода.
  • mode(): используется для управления границами входного массива, когда мы хотим расширить его границу. Доступны следующие режимы: перенос, постоянный, ближайший, зеркальный и отраженный.
  • cval (скаляр): используется для заполнения прошлых границ входного массива, когда режим установлен на константу.
  • origin (int): используется для помещения фильтра в данный входной массив. Если значение равно нулю, то фильтр помещается в центр. Если значение положительное, поместите фильтр слева, а если значение отрицательное, поместите фильтр справа.

Давайте разберемся на примере, выполнив следующие шаги:

  • Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
from scipy import ndimage
import numpy as np
  • Создайте трехмерный массив с несколькими значениями и весами, используя приведенный ниже код.
array_data = np.array([[[3,18], [46, 80]], [[0, 0], [62, 86]],[[86,34],[22,19]]])
weight = np.array([[[0,0,1],[1,1,1],[0,1,0]]])
  • Теперь передайте созданный выше трехмерный массив и веса в метод свертки.
ndimage.convolve(array_data,weights=weight,cval=0.1,mode='constant')

Свертка 3d

Метод fftconvolve()

В Scipy есть метод fftconvolve() в модуле scipy.signal, который свертывает n-мерный массив с использованием метода FFT (быстрое преобразование Фурье).

Синтаксис: приведен ниже.

scipy.signal.fftconvolve(in1, in2, mode='full', method='auto')

Где параметры:

  • in1 (array_data): используется для ввода первого сигнала в виде массива.
  • in2 (array_data): используется для ввода второго сигнала в виде массива, размерность которого должна быть такой же, как у первого входного массива.
  • mode: используется для указания строки, определяющей размер вывода. Режим может быть одинаковым, полным и действительным.
  • method: используется для указания метода, который вычисляет свертку. Метод может быть автоматическим, прямым и FFT.

Давайте разберемся на примере, выполнив следующие шаги:

  • Импортируйте необходимую библиотеку, используя приведенный ниже код Python.
from scipy.signal import fftconvolve
import scipy.signal
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
  • Сгенерируйте сигнал случайного шума и примените метод fftconvolveI(), используя приведенный ниже код.
random_gen = np.random.default_rng()
s = random_gen.standard_normal(800)
autocorrelation = fftconvolve(s, s[::-1], mode='full')
  • Давайте построим свернутый выше сигнал, используя приведенный ниже код.
fig,(orig_axes, mag_axes) = plt.subplots(2, 1)
orig_axes.plot(s)
orig_axes.set_title('It is noise')
mag_axes.plot(np.arange(-len(s)+1,len(s)), autocorrelation)
mag_axes.set_title('It is autocorrelation')
fig.tight_layout()
fig.show()

Метод fftconvolve

Метод gaussian_filter

В Scipy есть метод gaussian_filter внутри модуля scipy.ndimage, который применяет гауссово значение к многомерному массиву.

Синтаксис:

scipy.ndimage.gaussian_filter(input, sigma, order=0, output=int, mode='nerest', cval=1.1, truncate=3.1)

Где параметры:

  • input (array_data): это данные массива в качестве входных данных.
  • sigma (последовательность скаляров): стандартное отклонение ядра Гаусса.
  • order (int): используется для указания порядка фильтра.
  • output  (dtype, array): используется для указания типа данных возвращаемого массива в качестве вывода.
  • mode(): используется для управления границами данного массива в качестве входных данных, когда мы хотим расширить его границу. Доступны следующие режимы: перенос, постоянный, ближайший, зеркальный и отраженный.
  • cval(скаляр): используется для заполнения прошлых ребер данного массива в качестве входных данных, когда режим установлен на константу.

Метод gaussian_filter возвращает gaussian_filter типа ndarray.

Давайте разберемся на примере, выполнив следующие шаги:

  • Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
from scipy.ndimage import gaussian_filter
import numpy as np
  • Создайте массив, содержащий значения, используя приведенный ниже код.
array_data = np.arange(100, step=4).reshape((5,5))
array_data
  • Теперь примените фильтр Гаусса к данным массива, используя приведенный ниже код.
gaussian_filter(array_data, sigma=1)

Метод gaussian_filter

Метод convolve1d()

Здесь мы будем использовать тот же метод convolve1d() Scipy для свертки данного массива по указанной оси.

Давайте рассмотрим пример, выполнив следующие шаги:

  • Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
from scipy import ndimage
import numpy as np
  • Создайте двумерный массив с несколькими значениями и весами, используя приведенный ниже код Python.
array_data = np.array([(4,5,8,6),(0,1,4,7)])
weight = [0,1,1]
  • Передайте созданный выше двумерный массив и веса в метод свертки без указания параметров оси.
ndimage.convolve1d(array_data,weights=weight)
  • Снова запустите приведенный выше код с осью, равной 0, используя приведенный ниже код.
ndimage.convolve1d(array_data,weights=weight,axis=0)

Метод convolve1d()

Ядро

Веса представляют собой группу значений, называемую ядром в свертке, которая скользит по заданному массиву в качестве входных данных для преобразования этих данных. Здесь мы будем использовать тот же метод Scipy convolve(), который мы изучили в предыдущем подразделе.

Давайте разберемся на примере, выполнив следующие шаги:

  • Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
from scipy import ndimage
import numpy as np
  • Создайте двумерный массив с несколькими значениями и весами или ядрами, используя приведенный ниже код.
array_data = np.array([(1,4,8,6),(4,7,0,4)])
kernel = np.array([[1,0,1],[1,1,0]])
  • Передайте созданный выше двумерный массив и ядро в метод convolve и посмотрите результат.
ndimage.convolve(array_data,weights=kernel)
  • Создайте новое ядро, используя приведенный ниже код.
kernel_2 = np.array([[0,0,1],[0,1,1]])
  • Снова передайте новое ядро методу и посмотрите результат, используя приведенный ниже код.
ndimage.convolve(array_data,weights=kernel_2)

Ядро Scipy Convolve

Добавить комментарий