Python中的N维线性插值(使用有理数索引评估数组)
假设我有一个N维数组 ar
,它的形状是 ar.shape=(n1,...,nN)
。有没有什么Python模块可以让我在一个有理数的索引上评估 ar
?
举个例子,假设 ar.shape=(3,4,5)
。那么我想要一个函数 f
,它可以这样使用:result=f(ar,[2.3,1.5,3.4])
2 个回答
2
scipy.ndimage.map_coordinates 这个功能既快又简单;
你可以在这个链接下看到一个清晰的二维示例。
(map_coordinates( ... order=1 )
是你需要的——在二维中使用的是双线性插值,在三维中使用的是三线性插值...
order=0
表示取最近的网格点,order=2
或 3 会查看 (order+1)^d 个点——这样会慢一些,但结果更平滑。)
补充说明:正如你可能知道的,numpy 会把浮点数的索引向下取整为整数:
A = np.eye( 3 )
print A[ 0.1, 0.9 ], A[ 1.1, 2.9 ]
3
来自scipy文档的内容:scipy.interpolate.griddata
:用于插值不规则的N维数据。