Я хотел бы интерполировать 2D-массив «test», размеры которого - это 4x4 (как пример, на самом деле близко к 1000x1000) с сеткой формы 8x8.Python - Интерполяция 2D-массив для огромных массивов
import numpy as np
X = np.arange(0,4,1)
Y = np.arange(0,4,1)
points = np.vstack((X,Y))
points = points.T #my coordinates
#my values as a 2D array
test = np.array([[ 1.2514318 , 1.25145821, 1.25148472, 1.25151133],
[ 1.25087456, 1.25090105, 1.25092764, 1.25095435],
[ 1.25031581, 1.25034238, 1.25036907, 1.25039586],
[ 1.24975557, 1.24978222, 1.24980898, 1.24983587]])
Я стараюсь использовать griddata, но кажется, что работает только 1D, не так ли? поскольку ошибки говорят мне, что у меня «разное количество значений и точек». Я делаю ошибку?
from scipy.interpolate import griddata
grid_x, grid_y = np.mgrid[0:4:8j, 0:4:8j]
grid_z0 = griddata(points, test, (grid_x, grid_y), method='linear')
Это работает! ;) но для моего случая кажется, что там «слишком много точек данных для интерполяции» как ошибка :( – user3601754
Насколько велика ваш новый массив? Возможно, вы могли бы разбить его на подмассивы для выполнения интерполяции, а затем а затем соедините их вместе? – tom
см., например, этот [другой ответ] (http://stackoverflow.com/a/5329386/588071) – tom