scipy.ndimage.

shift#

scipy.ndimage.shift(входные данные, shift, вывод=None, порядок=3, mode='constant', cval=0.0, prefilter=True)[источник]#

Сдвинуть массив.

Массив сдвигается с использованием сплайн-интерполяции указанного порядка. Точки за пределами границ входных данных заполняются в соответствии с заданным режимом.

Параметры:
входные данныеarray_like

Входной массив.

shiftfloat или последовательность

Сдвиг вдоль осей. Если float, shift одинаково для каждой оси. Если последовательность, shift должен содержать одно значение для каждой оси.

выводмассив или dtype, опционально

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

порядокint, необязательный

Порядок сплайн-интерполяции, по умолчанию 3. Порядок должен быть в диапазоне 0-5.

mode{‘reflect’, ‘grid-mirror’, ‘constant’, ‘grid-constant’, ‘nearest’, ‘mirror’, ‘grid-wrap’, ‘wrap’}, опционально

The mode параметр определяет, как входной массив расширяется за пределы его границ. По умолчанию 'constant'. Поведение для каждого допустимого значения следующее (см. дополнительные графики и детали на граничные режимы):

‘reflect’ (d c b a | a b c d | d c b a)

Входные данные расширяются путем отражения относительно края последнего пикселя. Этот режим также иногда называют полувыборочной симметрией.

'grid-mirror'

Это синоним для 'reflect'.

‘constant’ (k k k k | a b c d | k k k k)

Входные данные расширяются путем заполнения всех значений за границей одним и тем же постоянным значением, определенным cval параметр. Никакая интерполяция не выполняется за пределами границ ввода.

‘grid-constant’ (k k k k | a b c d | k k k k)

Входные данные расширяются путем заполнения всех значений за границей одним и тем же постоянным значением, определенным cval параметр. Интерполяция происходит и для выборок за пределами области входных данных.

‘nearest’ (a a a a | a b c d | d d d d)

Входные данные расширяются путём репликации последнего пикселя.

‘mirror’ (d c b | a b c d | c b a)

Входные данные расширяются путем отражения относительно центра последнего пикселя. Этот режим также иногда называют симметрией целого образца.

‘grid-wrap’ (a b c d | a b c d | a b c d)

Входные данные расширяются путём обёртывания вокруг противоположного края.

‘wrap’ (d b c d | a b c d | b c a b)

Входные данные расширяются за счёт зацикливания на противоположный край, но таким образом, что последняя точка и начальная точка точно перекрываются. В этом случае не определено, какой образец будет выбран в точке перекрытия.

cvalскаляр, опционально

Значение для заполнения за краями ввода, если mode равно 'constant'. По умолчанию равно 0.0.

prefilterbool, необязательно

Определяет, предварительно ли отфильтрован входной массив с помощью spline_filter перед интерполяцией. По умолчанию True, что создаст временный float64 массив отфильтрованных значений, если order > 1. Если установить это значение в False, вывод будет слегка размыт, если order > 1, если только входные данные не предварительно отфильтрованы, т.е. они являются результатом вызова spline_filter на исходных входных данных.

Возвращает:
shiftndarray

Сдвинутый вход.

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

affine_transform

Аффинные преобразования

Примечания

Для комплекснозначных входные данные, эта функция независимо сдвигает вещественную и мнимую компоненты.

Добавлено в версии 1.6.0: Добавлена поддержка комплексных значений.

Примеры

Импортируйте необходимые модули и пример изображения.

>>> from scipy.ndimage import shift
>>> import matplotlib.pyplot as plt
>>> from scipy import datasets
>>> image = datasets.ascent()

Сдвинуть изображение вертикально на 20 пикселей.

>>> image_shifted_vertically = shift(image, (20, 0))

Сдвинуть изображение вертикально на -200 пикселей и горизонтально на 100 пикселей.

>>> image_shifted_both_directions = shift(image, (-200, 100))

Построить исходное и сдвинутое изображения.

>>> fig, axes = plt.subplots(3, 1, figsize=(4, 12))
>>> plt.gray()  # show the filtered result in grayscale
>>> top, middle, bottom = axes
>>> for ax in axes:
...     ax.set_axis_off()  # remove coordinate system
>>> top.imshow(image)
>>> top.set_title("Original image")
>>> middle.imshow(image_shifted_vertically)
>>> middle.set_title("Vertically shifted image")
>>> bottom.imshow(image_shifted_both_directions)
>>> bottom.set_title("Image shifted in both directions")
>>> fig.tight_layout()
../../_images/scipy-ndimage-shift-1.png