我正在使用Scipy插值6维数据,并希望有一种方法从我的插值器对象返回一个二维数组,而不是一维数组。目前,我只能通过使用for循环并多次调用interpolator对象来实现这一点—我希望有更好的方法。在
例如,在3D中:
#Random data
points=(np.arange(10), np.arange(5), np.arange(5))
values=np.random.rand(10, 5, 5)
interp_object=scipy.interpolate.RegularGridInterpolator(points, values)
我希望能够:
^{pr2}$但这导致
ValueError: shape mismatch: objects cannot be broadcast to a single shape
最后我要做的是:
out_array=np.empty((10, 5))
for i, y in enumerate(y_points):
out_array[:, i]=interp_object((x_points, y, z_points))
这个循环是我代码中的主要瓶颈,如果可能的话我想避免它!我想用RegularGridInterpolator
或其他插值方法来做吗?在
本部分代码:
将不起作用,因为您必须以数组形式提供所需的所有点。所以我们需要生成一个包含所有组合的矩阵。为此,我们可以使用
^{pr2}$meshgrid
。我们还需要对数组维进行一些操作,以使一切正常工作,所以它看起来可能有点混乱。下面是一个例子:另外请注意,我已经改变了你给出的分数。
RegularGridInterpolator
只能用于插值,如果在创建插值函数(在本例中称为interp_object
)时超出给定范围使用,则不会起作用。在相关问题 更多 >
编程相关推荐