Python中的N维线性插值(使用有理数索引评估数组)

4 投票
2 回答
8671 浏览
提问于 2025-04-17 13:39

假设我有一个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维数据

撰写回答