numpy插值增加数组大小

时间:2015-10-06 15:24:41

标签: python arrays numpy interpolation

这个问题与我之前的问题How to use numpy interpolation to increase a vector size有关,但这次我正在寻找一种方法来增加2D数组大小而不是向量。

我的想法是我有几对坐标(x;y),我希望用所需数量的(x;y)对来平滑线

对于Vector解决方案我使用@AGML用户的答案,效果非常好

from scipy.interpolate import UnivariateSpline

def enlargeVector(vector, size):
    old_indices = np.arange(0,len(a))
    new_length = 11
    new_indices = np.linspace(0,len(a)-1,new_length)
    spl = UnivariateSpline(old_indices,a,k=3,s=0)
    return spl(new_indices)

1 个答案:

答案 0 :(得分:2)

您可以使用scipy.ndimage.interpolation模块中的map_coordinates功能。

import numpy as np
from scipy.ndimage.interpolation import map_coordinates

A = np.random.random((10,10))
new_dims = []
for original_length, new_length in zip(A.shape, (100,100)):
    new_dims.append(np.linspace(0, original_length-1, new_length))

coords = np.meshgrid(*new_dims, indexing='ij')
B = map_coordinates(A, coords)