有scipy.misc.imresize
用于重采样3D数组的前两个维度。它还支持双线性插值。然而,似乎没有一个现有的函数来调整具有任意维数的数组的所有维的大小。我如何重新采样任何数组给定的新形状相同的秩,使用多线性插值?
您需要scipy.ndimage.zoom
,它可以如下使用:
>>> x = np.arange(8, dtype=np.float_).reshape(2, 2, 2)
>>> scipy.ndimage.zoom(x, 1.5, order=1)
array([[[ 0. , 0.5, 1. ],
[ 1. , 1.5, 2. ],
[ 2. , 2.5, 3. ]],
[[ 2. , 2.5, 3. ],
[ 3. , 3.5, 4. ],
[ 4. , 4.5, 5. ]],
[[ 4. , 4.5, 5. ],
[ 5. , 5.5, 6. ],
[ 6. , 6.5, 7. ]]])
注意,这个函数总是保留图像的边界,本质上是在每个像素中心重新采样一个节点的网格。如果您需要对重采样发生的确切位置进行更多控制,您可能需要查看scipy.ndimage
中的其他函数