使用 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])
我有 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])