Scipy Griddata输出尺寸

时间:2014-02-06 00:11:16

标签: python matplotlib grid scipy

我不确定我做错了什么。我正在尝试使用scipy griddata在不规则网格中插入数据。

from scipy.interpolate import griddata

我有两个列表,“x”和“y”,代表我原始的非插值网格的轴。它们都是长度为8的列表。

然后,我制作代表预期最终填充网格轴的数组。

ny = np.linspace(0.0, max(y), y[len(y)-1]/min_interval+1)
nx = np.linspace(0.0, max(x), len(ny))

我已经检查了“ny”和“nx”的形状(61,)。然后,我创建一个8 x 8列表“z”。最后,我尝试制作我的最终网格。

Z = griddata((np.array(x), np.array(y)), np.array(z), (nx, ny), method='nearest', fill_value=0)
print Z.shape

得到的2D阵列具有尺寸(61,8)。我尝试使用“x”和“y”作为列表和数组 - 没有变化。为什么它只在一个方向内插?我期待一个(61,61)阵列输出。 如果我认为它会有所帮助,我会包含实际数字,但我不知道它会如何产生影响。我不明白griddata是如何工作的吗?

1 个答案:

答案 0 :(得分:1)

以下是完整代码:

import numpy as np
from scipy.interpolate import griddata

# random data to interpolate
x = np.array([0, 10, 13, 17, 20, 50, 55, 60.0])
y = np.array([10, 20, 40, 80, 90, 95, 100, 120.0])
zg = np.random.randn(8, 8)

#select one of the following two line, it depends on the order in z
#xg, yg = np.broadcast_arrays(x[:, None], y[None, :])  
xg, yg = np.broadcast_arrays(x[None, :], y[:, None]) 

yg2, xg2 = np.mgrid[y.min()-10:y.max()+10:100j, x.min()-10:x.max()+10:100j]

zg2 = griddata((xg.ravel(), yg.ravel()), zg.ravel(), (xg2.ravel(), yg2.ravel()), method="nearest")
zg2.shape = yg2.shape

import pylab as pl

pl.pcolormesh(xg2, yg2, zg2)
pl.scatter(xg.ravel(), yg.ravel(), c=zg.ravel())

输出是:

enter image description here