scipy.ndimage.

map_coordinates#

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

Отобразить входной массив в новые координаты с помощью интерполяции.

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

Форма вывода выводится из формы координатного массива путём отбрасывания первой оси. Значения массива вдоль первой оси — это координаты во входном массиве, в которых находится выходное значение.

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

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

координатыarray_like

Координаты, в которых входные данные вычисляется.

выводмассив или 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 на исходных входных данных.

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

Результат преобразования входных данных. Форма вывода происходит из формы координаты путем отбрасывания первой оси.

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

spline_filter, geometric_transform, scipy.interpolate

Примечания

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

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

Примеры

>>> from scipy import ndimage
>>> import numpy as np
>>> a = np.arange(12.).reshape((4, 3))
>>> a
array([[  0.,   1.,   2.],
       [  3.,   4.,   5.],
       [  6.,   7.,   8.],
       [  9.,  10.,  11.]])
>>> ndimage.map_coordinates(a, [[0.5, 2], [0.5, 1]], order=1)
array([ 2.,  7.])

Выше интерполированное значение a[0.5, 0.5] даёт output[0], в то время как a[2, 1] — output[1].

>>> inds = np.array([[0.5, 2], [0.5, 4]])
>>> ndimage.map_coordinates(a, inds, order=1, cval=-33.3)
array([  2. , -33.3])
>>> ndimage.map_coordinates(a, inds, order=1, mode='nearest')
array([ 2.,  8.])
>>> ndimage.map_coordinates(a, inds, order=1, cval=0, output=bool)
array([ True, False], dtype=bool)