gpt4 book ai didi

python - 如何定义 RegularGridInterpolator 的值

转载 作者:行者123 更新时间:2023-12-01 04:34:26 24 4
gpt4 key购买 nike

我有 n 个等长数组,其转置对应于 n 维参数空间中的坐标:

x = np.array([800,800,800,800,900,900,900,900,900,1000,1000,1000,1000,1000])
y = np.array([4.5,5.0,4.5,5.0,4.5,5.0,5.5,5.0,5.5,4.5,5.0,5.5,5.0,5.5])
z = np.array([2,2,4,4,2,2,4,4,4,2,2,4,4,4])

参数空间中的每个坐标也有一个值:

v = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14])

我想在网格点之间进行插值以获得给定任意xyz坐标处的v值,例如[934,5.1,3.3]

我一直在尝试使用scipy.RegularGridInterpolator,它将(x,y,z)作为第一个参数,但我不知道如何构造每个点的值的第二个参数。

如有任何建议,我们将不胜感激!谢谢!

最佳答案

您的输入更适合使用LinearNDInterpolatorNearestNDInterpolator:

from scipy.interpolate import LinearNDInterpolator

ex = LinearNDInterpolator((x, y, z), v)
ex((800, 4.5, 2))
#array(1.0)

ex([[800, 4.5, 2], [800, 4.5, 3]])
#array([ 1., 2.])

要使用RegularGridInterpolator,您需要将v定义为常规数组。例如,假设:

x = np.array([800., 900., 1000.])
y = np.array([4.5, 5.0, 5.5, 6.0])
z = np.array([2., 4.])

数组v可能类似于:

v = np.array([[[ 1.,  2.],
[ 1., 2.],
[ 1., 2.],
[ 1., 2.]],

[[10., 20.],
[10., 20.],
[10., 20.],
[10., 20.]],

[[100., 200.],
[100., 200.],
[100., 200.],
[100., 200.]]])

然后您就可以进行插值:

form scipy.interpolate import RegularGridInterpolator

rgi = RegularGridInterpolator((x, y, z), v)

rgi((850., 4.5, 3.))
#array(8.25)

rgi([[850., 4.5, 3.], [800, 4.5, 3]])
#array([ 8.25, 1.5 ])

关于python - 如何定义 RegularGridInterpolator 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31978154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com