Ошибка индекса: индекс 206893 выходит за пределы оси 0 с размером 206893, проблема с данными сетки - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть проблема за последние 4 дня, пытающаяся понять ошибку python:

`enter code here`IndexError: index 206893 is out of bounds for axis 0 with size 206893

при применении, griddata и "ближайший" метод интерполяции, используя следующие строки:

создать матрицу, в которой я буду хранить первый интерполированный файл

tempnew    = np.ones((np.asarray(w1[0,0,:,:]).shape))*np.nan

координаты точки lon, lat исходной сетки

lonl,latl  = np.meshgrid(lon,lat)
points     = np.vstack((np.array(lonl).flatten(),np.array(latl).flatten())).transpose()

значения исходного файла

values     = np.array([np.asarray(temp[0,0,:,:])]).flatten()

Размеры сетки, которую я хочу интерполировать в

lons       = np.array(nav_lon)
lats       = np.array(nav_lat)
X,Y        = np.meshgrid(lons,lats)

Интерполяция

tempnew    = griddata(points,values, (X,Y), method = "nearest",fill_value=-3)

Здесь размерность каждой из переменных, которые я использую выше:

 #tempnew.shape: (728, 312) #(Dimensions of tempnew is (lats,lons))

 #lat.shape: (661,) #(original latitude)

 #lon.shape: (313,) #(original longitude)

 #points.shape: (206893, 2)

 #values.shape: (206893,)

 #X.shape: (728, 312)

 #Y.shape: (728, 312)

Вы можете мне помочь? * Я хотел бы отметить, что исходная файловая сетка представляет собой обычные (тип A) данные сетки, тогда как сетка, к которой я хочу интерполировать, не является регулярной (C -сетка данных)

Ошибка выглядит так:

In [36]: tempnew    = sp.interpolate.griddata(points,values, (X,Y), method = "nearest
...: ",fill_value=-3)                                                            
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-36-0d0b46a3542f> in <module>
----> 1 tempnew    = sp.interpolate.griddata(points,values, (X,Y), method = 
"nearest",fill_value=-3)

~/software/anaconda3/envs/mhw/lib/python3.7/site-packages/scipy/interpolate/ndgriddata.py in 
griddata(points, values, xi, method, fill_value, rescale)
217     elif method == 'nearest':
218         ip = NearestNDInterpolator(points, values, rescale=rescale)
--> 219         return ip(xi)
220     elif method == 'linear':
221         ip = LinearNDInterpolator(points, values, fill_value=fill_value,

~/software/anaconda3/envs/mhw/lib/python3.7/site-packages/scipy/interpolate/ndgriddata.py in 
__call__(self, *args)
 79         xi = self._scale_x(xi)
 80         dist, i = self.tree.query(xi)
 ---> 81         return self.values[i]
 82 
 83 

IndexError: index 206893 is out of bounds for axis 0 with size 206893

Заранее спасибо, Софи

...