【问题标题】:Numpy Interpolation Between Points Within Array (scipy.griddata)数组内点之间的 Numpy 插值(scipy.griddata)
【发布时间】:2021-08-04 20:02:16
【问题描述】:

我有一个固定大小的 numpy 数组,其中包含不规则间隔的数据。一个例子是:

[1 0 0 0 3 0 0 0 2 0
 0 1 0 0 0 0 0 0 2 0
 0 1 0 0 1 0 6 0 9 0
 0 0 0 0 6 0 3 0 0 1]

我想保持数组相同的形状,但是用从有数据的点插入的数据覆盖所有 0 值。如果数组中的数据点被认为是高度值,这实际上就是在这些点上创建一个表面。

我一直在尝试使用scipy.interpolate.griddata,但不断出现错误。我从一组已知数据点开始,如 [x, y, value]。以上,(第一行只为简洁起见)

data = [0, 0, 1
        0, 3, 3
        0, 8, 2 ....................

然后我定义

points = (data[:,0], data[:,1])
values = (data[:,2])

接下来,我定义要采样的点(在本例中,是我想要的网格)

grid = np.indices((4,10))

最后调用griddata

t = interpolate.griddata(points, values, grid, method = 'linear')

这会返回以下错误

ValueError: number of dimensions in xi does not match x

我是否使用了错误的功能?

谢谢!

【问题讨论】:

  • 我刚刚通过interp2d 帮助了其他人。这可能适合您的情况,将规则网格拟合到分散的数据点。无论如何,在使用这些函数时,请密切注意参数的所需尺寸和形状,包括源数据和插值点。了解文档至关重要。

标签: python arrays numpy scipy


【解决方案1】:

已解决:您需要将所需的点作为元组传递

t = interpolate.griddata(points, values, (grid[0,:,:], grid[1,:,:]), method = 'linear')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-31
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    • 2021-06-08
    • 1970-01-01
    相关资源
    最近更新 更多