我希望对一个大小为4x4的二维数组"test"进行插值,这只是一个示例,实际上要接近1000x1000。插值网格的形状应该是8x8。
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')
x
和y
坐标创建一个开放式网格来减少内存开销,即一个(nx, 1)
数组和一个(1, ny)
数组,而不是两个(nx, ny)
数组。例如,x, y = np.meshgrid(X, Y, sparse=True)
或x, y = np.ix_(X, Y)
。 - ali_m