基本上,是否有可能scipy.ndimage.map_coordinates
返回一个多值结构,而不仅仅是一个标量?我希望能够插值一次以检索 5 个值,而不是插值 5 次。
这是我在 MWE 上的尝试来证明这个问题。我将从标量的 3D 插值开始。我暂时不会在点之间进行,因为那不是重点。
import numpy as np
from scipy import ndimage
coords = np.array([[1.,1.,1.]])
a = np.arange(3*3*3).reshape(3,3,3)
ndimage.map_coordinates(a,coords.T) # array([13.])
现在,假设我想要a
一对值,而不仅仅是一个。我的直觉是
a = np.arange(3*3*3*2).reshape(3,3,3,2)
a[1,1,1] # array([26.,27.])
ndimage.map_coordinates(a[:,:,:],coords.T) # I'd like array([26.,27.])
而不是所需的输出,我得到以下内容:
RuntimeError Traceback (most recent call last)
(...)/<ipython-input-84-77334fb7469f> in <module>()
----> 1 ndimage.map_coordinates(a[:,:,:],np.array([[1.,1.,1.]]).T)
/usr/lib/python2.7/dist-packages/scipy/ndimage/interpolation.pyc in map_coordinates(input, coordinates, output, order, mode, cval, prefilter)
287 raise RuntimeError('input and output rank must be > 0')
288 if coordinates.shape[0] != input.ndim:
--> 289 raise RuntimeError('invalid shape for coordinate array')
290 mode = _extend_mode_to_code(mode)
291 if prefilter and order > 1:
RuntimeError: invalid shape for coordinate array
我找不到任何结构( 、 等)的形状排列,a
这coords
给了我正在寻找的答案。此外,如果有比使用更好的方法来做到这一点map_coordinates
,请继续。我认为scipy.interpolate.interp1d
可能是要走的路,但我找不到任何文档或暗示它可能会做什么......