def create_variable(dim_sizes, dtype, dim_names=None, attributes=None, fill_value=None): """ Return default empty xarray Variable :type dim_sizes: list :param dim_sizes: dimension sizes as ints, i.e. [dim1_size, dim2_size, dim3_size] (e.g. [2,3,5]) :type dtype: type :param dtype: numpy data type :type dim_names: list :param dim_names: (optional) dimension names as strings, i.e. ["dim1_name", "dim2_name", "dim3_size"] :type attributes: dict :param attributes: (optional) dictionary of variable attributes, e.g. standard_name :type fill_value: int/float :param fill_value: (optional) fill value (if None CF compliant value used) :return: Default empty variable :rtype: xarray.Variable """ if fill_value is None: fill_value = DatasetUtil.get_default_fill_value(dtype) default_array = DatasetUtil.create_default_array(dim_sizes, dtype, fill_value=fill_value) if dim_names is None: variable = Variable(DEFAULT_DIM_NAMES[-len(dim_sizes):], default_array) else: variable = Variable(dim_names, default_array) variable.attrs["_FillValue"] = fill_value if attributes is not None: variable.attrs = {**variable.attrs, **attributes} return variable