使用 scipy 对 python 中的多维数组进行插值。

interpolation of arrays with multiple dimensions in python using scipy .

我有 2 个数组。

DEPTH = array([1945.0813, 1945.2337, 1945.3861, ..., 3089.7577, 
3089.9101,3090.0625])

DEPTH.shape = (7514,)

'CURVE_VALUES' = array([[  8.8783,  16.5181,      nan,  42.9207, 
   137.1404],
   [  8.8783,  16.4784,      nan,  42.2368, 137.8069],
   [  8.8783,  16.685 ,      nan,  41.3884, 138.402 ],
   ...,
   [     nan,      nan,      nan,      nan,      nan],
   [     nan,      nan,      nan,      nan,      nan],
   [     nan,      nan,      nan,      nan,      nan]])


   CURVE_VALUES.shape = (7514, 5)

我如何在 'DEPTH' 上插入 'CURVE_VALUES' 这样如果我有一个新数组 'NEW_DEP' = array([1950.1104, 1950.2628, 1950.4152, ..., 3089.91 , 3090.0624, 3090.2148])

我可以通过插值找到相应的CURVE_VALUES。

我试过使用 scipy.interpolate.interp1d 进行单调,但我想在一维数组上插入 nD 数组。

import numpy as np
from scipy import interpolate
x = np.arange(0, 10)
y = np.exp(-x/3.0)
f = interpolate.interp1d(x, y)

我希望结果具有相同的形状:NEW_DEP 的行数 x CURVE_VALUES

的列数

当您有 (N,d) x 个点和 (N,1) y 个点时,使用多变量插值。你试图做的是相反的。试试这个:

interpolators = [interp1d(DEPTH, y_slice) for y_slice in CURVE_VALUES.T]
f = lambda x: np.array([i(x) for i in interpolators])