Создание графиков временных рядов из многомерного массива для одного уникального значения индекса - PullRequest
0 голосов
/ 23 октября 2019

У меня есть файл .nc с размерами (1461, 257, 512), соответствующими (время, широта, долгота). Данные в основном равны нулю, но есть случайные целочисленные записи, которые по сути являются индексами для экстремальных значений в исходных данных.

Например, во времени = 1 массив равен почти всем 0, а также нескольким значениям, равным «52», что указывает на наличие экземпляра экстремальных значений на этом временном шаге. В первом временном шаге есть другие целые числа, но я бы хотел пока их игнорировать. В дальнейших временных шагах есть другие случаи "52". Я хочу построить 1461 изображение, по одному для каждого временного шага, каждое из которых показывает контур, в котором геолокационные значения «52» появляются в массиве, но где все остальное равно нулю.

В конечном итоге я хочу обобщить, чтобы иметь 1461 таких графиков для КАЖДОГО целочисленного значения, которое отображается в массиве, но я был бы рад выяснить, как сделать только одну серию.

Комментариивключите некоторые из моих неудачных попыток.

file_111 = Dataset('/.../blob2.nc')

tim = file_111.variables['time'][:]
lon = file_111.variables['lon'][:]
lat = file_111.variables['lat'][:]
ext = file_111.variables['ext'][:,:,:]

#I tried reshaping the data to search the flattened lat/lon dimensions but that only gave me a single plot with multiple contours of different values

ext2 = ext.reshape(1461,131584)

#I also tried iterating over all dimensions but only got a single plot with multiple contours on it

for i in range(0,1461):
   for j in range(0,257):
      for k in range(0,512):
         if ext[i,j,k] == 52:
            plt.contour(lon, lat, ext[i,:,:])
            plt.savefig("/.../blob_time"+str(i))
            plt.close('all')

...