.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "source/auto_examples/utils/plot_change_units.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_source_auto_examples_utils_plot_change_units.py: Changing units in dataset ------------------------- This is an example of how to change units in the xarray dataset. .. GENERATED FROM PYTHON SOURCE LINES 9-66 .. rst-class:: sphx-glr-script-out .. code-block:: none Variables in read data first_cbh: mean=677.3226928710938 units=m second_cbh: mean=872.345703125 units=m alt: mean=318.0 units=m Variables with one changed to km first_cbh: mean=0.6773227453231812 units=km second_cbh: mean=872.345703125 units=m alt: mean=318.0 units=m Variables with both changed to km first_cbh: mean=0.6773227453231812 units=km second_cbh: mean=0.8723457455635071 units=km alt: mean=0.31800001859664917 units=km Variables changed back to m by looping over all variables in dataset Orginal dataset is same as retured dataset: True first_cbh: mean=677.3226928710938 units=m second_cbh: mean=872.345703125 units=m alt: mean=318.0000305175781 units=m Variables and coordinate variable values changed to km Orginal dataset is same as retured dataset: False first_cbh: mean=0.6773227453231812 units=km second_cbh: mean=0.8723457455635071 units=km alt: mean=0.31800004839897156 units=km range: mean=3.7800002098083496 units=km | .. code-block:: Python from arm_test_data import DATASETS import numpy as np import act def print_summary(ds, variables): for var_name in variables: print( f'{var_name}: mean={np.nanmean(ds[var_name].values)} ' f"units={ds[var_name].attrs['units']}" ) print() variables = ['first_cbh', 'second_cbh', 'alt'] # Read in some example data filename_ceil = DATASETS.fetch('sgpceilC1.b1.20190101.000000.nc') ds = act.io.arm.read_arm_netcdf(filename_ceil) # Print the variable name, mean of values and units print('Variables in read data') print_summary(ds, variables) # Change units of one varible from m to km ds.utils.change_units(variables='first_cbh', desired_unit='km') print('Variables with one changed to km') print_summary(ds, variables) # Change units of more than one varible from to km ds.utils.change_units(variables=variables, desired_unit='km') print('Variables with both changed to km') print_summary(ds, variables) # Can change all data variables in the dataset that are units of length by not providing # a list of variables. Here we are changing back to orginal meters. # Also, because it needs to loop over all variables and try to convert, will take # longer if we keep the QC variables. Faseter if we exclude them. # The method will return a dataset. In this case the dataset returned is the same # dataset. skip_variables = [ii for ii in ds.data_vars if ii.startswith('qc_')] new_ds = ds.utils.change_units(variables=None, desired_unit='m', skip_variables=skip_variables) print('Variables changed back to m by looping over all variables in dataset') print('Orginal dataset is same as retured dataset:', ds is new_ds) print_summary(new_ds, variables) # For coordinate variables need to explicitly give coordinage variable name and use # the returned dataset. The xarray method used to change values on coordinate # values requries returning a new updated dataet. var_name = 'range' variables.append(var_name) new_ds = ds.utils.change_units(variables=variables, desired_unit='km') print('Variables and coordinate variable values changed to km') print('Orginal dataset is same as retured dataset:', ds is new_ds) print_summary(new_ds, variables) .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 3.722 seconds) .. _sphx_glr_download_source_auto_examples_utils_plot_change_units.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_change_units.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_change_units.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_change_units.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_