这个问题与我之前的问题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)
答案 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)