scipy.ndimage.

map_coordinates#

scipy.ndimage.map_coordinates(input, coordinates, output=None, order=3, mode='constant', cval=0.0, prefilter=True)[source]#

通过插值将输入数组映射到新坐标。

坐标数组用于为输出中的每个点查找输入中对应的坐标。输入在这些坐标处的值由所需阶数的样条插值确定。

输出的形状通过去除坐标数组的第一个轴来派生。数组沿第一个轴的值是输入数组中找到输出值的坐标。

参数
input类数组

输入数组。

coordinates类数组

input 被评估的坐标。

output数组或数据类型,可选

放置输出的数组,或返回数组的数据类型。默认情况下,将创建一个与输入具有相同数据类型的数组。

order整数,可选

样条插值的阶数,默认为 3。阶数必须在 0-5 范围内。

mode{'reflect', 'grid-mirror', 'constant', 'grid-constant', 'nearest', 'mirror', 'grid-wrap', 'wrap'},可选

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。

prefilter布尔值,可选

确定输入数组在插值前是否使用 spline_filter 进行预过滤。默认值为 True,如果 order > 1,这将创建一个临时的 float64 过滤值数组。如果将其设置为 False,则当 order > 1 时,输出会略微模糊,除非输入已经过预过滤,即它是对原始输入调用 spline_filter 的结果。

返回
map_coordinatesndarray

转换输入的结果。输出的形状通过去除 coordinates 的第一个轴来派生。

备注

对于复数值 input,此函数独立映射实部和虚部。

版本 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)