我正在将一个同事的IDL代码重写成python,并提出了一些让我困惑的差异。根据我发现的其他SO问题和邮件列表线程,如果使用scipy.ndimage.interpolation.map_coordinates
并指定order=1
,那么它应该执行双线性插值。当比较IDL代码(在GDL中运行)和python(map_坐标)之间的结果时,我得到了不同的结果。然后我尝试使用mpl_toolkits.basemap.interp
,得到了与IDL代码相同的结果。下面是一个简单的例子,说明了什么是错误的。有人能帮我弄清楚我在map_coordinates
上做错了什么,或者{
from scipy.ndimage.interpolation import map_coordinates
from mpl_toolkits.basemap import interp
import numpy
in_data = numpy.array([[ 25.89125824, 25.88840675],[ 25.90930748, 25.90640068]], dtype=numpy.float32)
map_coordinates(in_data, [[0.0],[0.125]], order=1, mode='nearest')
# map_coordinates results in "25.89090157"
interp(in_data, numpy.array([0,1]), numpy.array([0,1]), numpy.array([0.0]), numpy.array([0.125]), order=1)
# interp results in "25.89351439", same as GDL's "25.8935" when printed
我完全可以使用interp
,但是我很好奇为什么{map_coordinates
文档没有提到双线性,它实际上是双线性吗?我错过了什么?在
当使用
map_coordinates
时,需要转置数组或将坐标更改为(y,x)格式,因为数组的形状是(height, width)
。在这将输出:
^{pr2}$相关问题 更多 >
编程相关推荐