Извлечение данных из файла NetCDF4 с использованием списка - PullRequest
0 голосов
/ 17 сентября 2018

Я использую список целых чисел, соответствующих индексу x, y массива NetCDF с сеткой для извлечения конкретных значений, исходный код был получен из здесь . Мой файл NetCDF имеет одно измерение на одном временном шаге, которое называется TMAX2M. Мой код, написанный для выполнения этого, выглядит следующим образом (обратите внимание, что я не показал вызов netCDF4 в верхней части скрипта):

# grid point lists
lat = [914]
lon = [2141]

# Open netCDF File
fh = Dataset('/pathtofile/temperaturedataset.nc', mode='r')

# Variable Extraction
point_list = zip(lat,lon)
dataset_list = []
for i, j in point_list:
    dataset_list.append(fh.variables['TMAX2M'][i,j])

print(dataset_list)

Код выполняется, и результат выглядит следующим образом:

masked_array(data=73,mask=False,fill_value=999999,dtype=int16]

Значение данных здесь верное, однако я хотел бы, чтобы выходные данные содержали только целое число, содержащееся в «данных». Цель состоит в том, чтобы передать количество точек x, y, как показано в приведенном выше примере, и объединить их в один список.

Любые предложения о том, что добавить в код, чтобы сделать это достижимым, было бы замечательно.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Я предлагаю преобразовать в массив NumPy следующим образом:

for i, j in point_list:
    dataset_list.append(np.array(fh.variables['TMAX2M'][i,j]))
0 голосов
/ 17 сентября 2018

Решение для вызова определенного значения из списка x, y на одном шаге в наборе данных может быть сделано следующим образом:

dataset_list = []
for i, j in point_list:
    dataset_list.append(fh.variables['TMAX2M'][:][i,j])

Предыдущий связанный пример содержал [0,16] для индексированных переменных, в этом случае можно использовать [:].

...