我正在努力执行一个简单的线性插值,将一个大小为Nx*Ny*Nz
的数据空间转换成一个新的数据空间,以保持其他两个维度不变,即结果输出将是Nxnew*Ny*Nz
.似乎RegularGridInterpolator
从scipy
似乎是要走的路,虽然,它不是直观的我如何生成输入.
from scipy.interpolate import RegularGridInterpolator
import numpy as np
x = np.linspace(1,4,11)
y = np.linspace(4,7,22)
z = np.linspace(7,9,33)
V = np.zeros((11,22,33))
for i in range(11):
for j in range(22):
for k in range(33):
V[i,j,k] = 100*x[i] + 10*y[j] + z[k]
fn = RegularGridInterpolator((x,y,z), V)
pts = np.array([[[[2,6,8],[3,5,7]], [[2,6,8],[3,5,7]]]])
out = fn(pts)
print(out, out.shape)
在这个mwe中,我想使用新的点xnew = np.linspace(2,3,50)
,同时保持y
和z
相同,这样得到的数组就变成了形状(50,22,33)
.此外,如何将其推广为n维数组沿一维的插值,同时保持其余坐标不变?