Как сохранить те же единицы от моих данных об осадках при использовании masked_array? - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь создать карту осадков с одним файлом nc, аналогично примеру NWS, который я нашел здесь .

В моем случае, однако, мои данные об осадках уже находятся в mm. Как мне сохранить те же единицы? Я прочитал следующее:

Создать numpy.ma.MaskedArray с прикрепленными единицами. Это тонкая оболочка вокруг numpy.ma.masked_array(), которая обеспечивает правильное подключение юнитов к результату (в противном случае юниты молча теряются) Единицы измерения берутся из аргумента data_units, или, если это None, используются единицы измерения данных.

Я следовал заданным параметрам (masked_array(data, data_units=None, **kwargs)) для моего файла, но

  1. kwargs не определен, и
  2. , если я не включаю kwargs, я получаю

"AttributeError: объект 'MaskedArray' не имеет атрибута «Единицы».

Я новичок, поэтому, пожалуйста, будьте нежны. Спасибо за ваше руководство! Вот мой код ...

from netCDF4 import Dataset as NetCDFFile
import matplotlib.pyplot as plt
import numpy as np
import cartopy
import cartopy.crs as ccrs
import cartopy.feature as cf
import matplotlib.colors as mcolors
from metpy.units import masked_array, units

nc_data = NetCDFFile(r'C:\Users\Jocelyn\Desktop\TRMM_daily_prcp_data\3B42_Daily.19980601.7.nc4', 'r')

print (nc_data)
print(nc_data.variables.keys()) 

prcp = nc_data.variables['precipitation']
data = masked_array(prcp[:], prcp_units=None, **kwargs)
lat = nc_data.variables['lat']
lon = nc_data.variables['lon']

1 Ответ

0 голосов
/ 01 мая 2020

Если вы не пытаетесь использовать расчеты MetPy со своими данными об осадках и вам не требуется выполнять какую-либо конвертацию единиц, тогда вы сможете полностью исключить использование masked_array. Так что попробуйте:

prcp = nc_data.variables['precipitation']
data = prcp[:]
lat = nc_data.variables['lat']
lon = nc_data.variables['lon']
...