【发布时间】:2017-06-16 22:49:55
【问题描述】:
我正在使用 Scipy 对 6 维数据进行插值,并且想要一种从我的插值器对象返回二维数组而不是一维数组的方法。目前,我只能通过使用 for 循环并多次调用插值器对象来实现这一点——我希望有更好的方法。
例如,在 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)
我希望能够做到:
#Pick some points along each axis
x_points=np.arange(10)
y_points=[1.2, 3.1, 1.4, 4.8, 0.1]
z_points=3.5
xi=(x_points, y_points, z_points)
out_array=interp_object(xi)
但这会导致
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 或其他插值方法,我想做的是否可行?
【问题讨论】:
标签: python arrays numpy scipy interpolation