У меня небольшие проблемы, чтобы понять, как реализовать кубическую интерполяцию на сетке. У меня есть 25 значений величин, хранящихся в 1D массиве. Каждое значение представляет собой число внутри ячейки. Таким образом, значения отображаются на изображении 5x5 imshow, где каждая из 25 результирующих ячеек представляет мои сохраненные значения.Интерполяция на 2D-сетке python
Я успешно использовал встроенные параметры интерполяции на imshow, но я действительно хотел бы вернуть результат интерполяции.
data = 1D numpy array with 25 values
imshow(data .reshape(5, 5), origin='upper', interpolation='lanczos', cmap=cm.jet)
Я пытался идти с этой встроенной SciPy функции интерполяции, однако я не знаю, что это действительно лучший способ.
from scipy.interpolate import griddata
grid_x, grid_y = np.mgrid[0:4:100j, 0:4:200j]
grid_z2 = griddata(np.array([arange(5), arange(5)]).T, data, (grid_x, grid_y), method='cubic')
Я получаю ValueError с различным количеством значений и точек. Если это не самый лучший способ, я могу использовать другие подходы.
Traceback (most recent call last):
File "file.py", line 100, in <module>
grid_z2 = griddata(np.array([arange(5), arange(5)]).T, data, (grid_x, grid_y), method='cubic')
File "C:\Program Files\Anaconda\lib\site-packages\scipy\interpolate\ndgriddata.py", line 212, in griddata
rescale=rescale)
File "scipy\interpolate\interpnd.pyx", line 840, in scipy.interpolate.interpnd.CloughTocher2DInterpolator.__init__ (scipy\interpolate\interpnd.c:9953)
File "scipy\interpolate\interpnd.pyx", line 78, in scipy.interpolate.interpnd.NDInterpolatorBase.__init__ (scipy\interpolate\interpnd.c:2342)
File "scipy\interpolate\interpnd.pyx", line 121, in scipy.interpolate.interpnd.NDInterpolatorBase._check_init_shape (scipy\interpolate\interpnd.c:3085)
ValueError: different number of values and points
пожалуйста, напишите полную ошибка отслеживающего –
@Julien Spronck К сожалению об этом, отредактировано отражении вашего запроса. – dudas
в traceback, вы видите 'square_mag [:, 2]' вместо 'data' ... ошибка может возникнуть оттуда, поскольку' square_mag [:, 2] 'не является массивом 5x5 –