{ "cells": [ { "cell_type": "markdown", "id": "2f1adae7", "metadata": {}, "source": [ "# xarray\n", "xarray is a library for labelled multidimensional array objects (dataset and dataarrays).\n", "\n", "Tutorial based on excellent guide from [Pangeo](http://gallery.pangeo.io/repos/pangeo-data/pangeo-tutorial-gallery/xarray.html)." ] }, { "cell_type": "code", "execution_count": 1, "id": "97c02866", "metadata": {}, "outputs": [], "source": [ "import xarray as xr\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "id": "116363a2", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
<xarray.DataArray (dim_0: 3)>\n", "array([1, 2, 3])\n", "Dimensions without coordinates: dim_0
array([1, 2, 3])
<xarray.DataArray (lat: 580, lon: 1440)>\n", "array([[0.46790812, 0.70384265, 0.3217949 , ..., 0.99066462, 0.17896173,\n", " 0.75710259],\n", " [0.56797323, 0.60090187, 0.63837513, ..., 0.86415796, 0.5610759 ,\n", " 0.17693797],\n", " [0.74666124, 0.17262882, 0.14981358, ..., 0.06162647, 0.462453 ,\n", " 0.94873145],\n", " ...,\n", " [0.21474678, 0.60416556, 0.63095547, ..., 0.81648712, 0.3626262 ,\n", " 0.83673775],\n", " [0.60234326, 0.12133838, 0.90178623, ..., 0.05333163, 0.89202358,\n", " 0.76202533],\n", " [0.10804089, 0.91367279, 0.38442562, ..., 0.6915072 , 0.09413142,\n", " 0.1209971 ]])\n", "Coordinates:\n", " * lat (lat) float64 -60.0 -59.75 -59.5 -59.25 ... 84.0 84.25 84.5 84.75\n", " * lon (lon) float64 -180.0 -179.8 -179.5 -179.2 ... 179.2 179.5 179.8
array([[0.46790812, 0.70384265, 0.3217949 , ..., 0.99066462, 0.17896173,\n", " 0.75710259],\n", " [0.56797323, 0.60090187, 0.63837513, ..., 0.86415796, 0.5610759 ,\n", " 0.17693797],\n", " [0.74666124, 0.17262882, 0.14981358, ..., 0.06162647, 0.462453 ,\n", " 0.94873145],\n", " ...,\n", " [0.21474678, 0.60416556, 0.63095547, ..., 0.81648712, 0.3626262 ,\n", " 0.83673775],\n", " [0.60234326, 0.12133838, 0.90178623, ..., 0.05333163, 0.89202358,\n", " 0.76202533],\n", " [0.10804089, 0.91367279, 0.38442562, ..., 0.6915072 , 0.09413142,\n", " 0.1209971 ]])
array([-60. , -59.75, -59.5 , ..., 84.25, 84.5 , 84.75])
array([-180. , -179.75, -179.5 , ..., 179.25, 179.5 , 179.75])
<xarray.Dataset>\n", "Dimensions: (lat: 580, lon: 1440)\n", "Coordinates:\n", " * lat (lat) float64 -60.0 -59.75 -59.5 -59.25 ... 84.25 84.5 84.75\n", " * lon (lon) float64 -180.0 -179.8 -179.5 ... 179.2 179.5 179.8\n", "Data variables:\n", " random_array (lat, lon) float64 0.4679 0.7038 0.3218 ... 0.09413 0.121
array([-60. , -59.75, -59.5 , ..., 84.25, 84.5 , 84.75])
array([-180. , -179.75, -179.5 , ..., 179.25, 179.5 , 179.75])
array([[0.46790812, 0.70384265, 0.3217949 , ..., 0.99066462, 0.17896173,\n", " 0.75710259],\n", " [0.56797323, 0.60090187, 0.63837513, ..., 0.86415796, 0.5610759 ,\n", " 0.17693797],\n", " [0.74666124, 0.17262882, 0.14981358, ..., 0.06162647, 0.462453 ,\n", " 0.94873145],\n", " ...,\n", " [0.21474678, 0.60416556, 0.63095547, ..., 0.81648712, 0.3626262 ,\n", " 0.83673775],\n", " [0.60234326, 0.12133838, 0.90178623, ..., 0.05333163, 0.89202358,\n", " 0.76202533],\n", " [0.10804089, 0.91367279, 0.38442562, ..., 0.6915072 , 0.09413142,\n", " 0.1209971 ]])
<xarray.Dataset>\n", "Dimensions: (lat: 89, lon: 180, time: 2007)\n", "Coordinates:\n", " * lat (lat) float32 88.0 86.0 84.0 82.0 80.0 ... -82.0 -84.0 -86.0 -88.0\n", " * lon (lon) float32 0.0 2.0 4.0 6.0 8.0 ... 350.0 352.0 354.0 356.0 358.0\n", " * time (time) datetime64[ns] 1854-01-01 1854-02-01 ... 2021-03-01\n", "Data variables:\n", " sst (time, lat, lon) float32 ...\n", "Attributes:\n", " climatology: Climatology is based on 1971-2000 SST, X...\n", " description: In situ data: ICOADS2.5 before 2007 and ...\n", " keywords_vocabulary: NASA Global Change Master Directory (GCM...\n", " keywords: Earth Science > Oceans > Ocean Temperatu...\n", " instrument: Conventional thermometers\n", " source_comment: SSTs were observed by conventional therm...\n", " geospatial_lon_min: -1.0\n", " geospatial_lon_max: 359.0\n", " geospatial_laty_max: 89.0\n", " geospatial_laty_min: -89.0\n", " geospatial_lat_max: 89.0\n", " geospatial_lat_min: -89.0\n", " geospatial_lat_units: degrees_north\n", " geospatial_lon_units: degrees_east\n", " cdm_data_type: Grid\n", " project: NOAA Extended Reconstructed Sea Surface ...\n", " original_publisher_url: http://www.ncdc.noaa.gov\n", " References: https://www.ncdc.noaa.gov/data-access/ma...\n", " source: In situ data: ICOADS R3.0 before 2015, N...\n", " title: NOAA ERSSTv5 (in situ only)\n", " history: created 07/2017 by PSD data using NCEI's...\n", " institution: This version written at NOAA/ESRL PSD: o...\n", " citation: Huang et al, 2017: Extended Reconstructe...\n", " platform: Ship and Buoy SSTs from ICOADS R3.0 and ...\n", " standard_name_vocabulary: CF Standard Name Table (v40, 25 January ...\n", " processing_level: NOAA Level 4\n", " Conventions: CF-1.6, ACDD-1.3\n", " metadata_link: :metadata_link = https://doi.org/10.7289...\n", " creator_name: Boyin Huang (original)\n", " date_created: 2017-06-30T12:18:00Z (original)\n", " product_version: Version 5\n", " creator_url_original: https://www.ncei.noaa.gov\n", " license: No constraints on data access or use\n", " comment: SSTs were observed by conventional therm...\n", " summary: ERSST.v5 is developed based on v4 after ...\n", " dataset_title: NOAA Extended Reconstructed SST V5\n", " data_modified: 2021-04-07\n", " DODS_EXTRA.Unlimited_Dimension: time
array([ 88., 86., 84., 82., 80., 78., 76., 74., 72., 70., 68., 66.,\n", " 64., 62., 60., 58., 56., 54., 52., 50., 48., 46., 44., 42.,\n", " 40., 38., 36., 34., 32., 30., 28., 26., 24., 22., 20., 18.,\n", " 16., 14., 12., 10., 8., 6., 4., 2., 0., -2., -4., -6.,\n", " -8., -10., -12., -14., -16., -18., -20., -22., -24., -26., -28., -30.,\n", " -32., -34., -36., -38., -40., -42., -44., -46., -48., -50., -52., -54.,\n", " -56., -58., -60., -62., -64., -66., -68., -70., -72., -74., -76., -78.,\n", " -80., -82., -84., -86., -88.], dtype=float32)
array([ 0., 2., 4., 6., 8., 10., 12., 14., 16., 18., 20., 22.,\n", " 24., 26., 28., 30., 32., 34., 36., 38., 40., 42., 44., 46.,\n", " 48., 50., 52., 54., 56., 58., 60., 62., 64., 66., 68., 70.,\n", " 72., 74., 76., 78., 80., 82., 84., 86., 88., 90., 92., 94.,\n", " 96., 98., 100., 102., 104., 106., 108., 110., 112., 114., 116., 118.,\n", " 120., 122., 124., 126., 128., 130., 132., 134., 136., 138., 140., 142.,\n", " 144., 146., 148., 150., 152., 154., 156., 158., 160., 162., 164., 166.,\n", " 168., 170., 172., 174., 176., 178., 180., 182., 184., 186., 188., 190.,\n", " 192., 194., 196., 198., 200., 202., 204., 206., 208., 210., 212., 214.,\n", " 216., 218., 220., 222., 224., 226., 228., 230., 232., 234., 236., 238.,\n", " 240., 242., 244., 246., 248., 250., 252., 254., 256., 258., 260., 262.,\n", " 264., 266., 268., 270., 272., 274., 276., 278., 280., 282., 284., 286.,\n", " 288., 290., 292., 294., 296., 298., 300., 302., 304., 306., 308., 310.,\n", " 312., 314., 316., 318., 320., 322., 324., 326., 328., 330., 332., 334.,\n", " 336., 338., 340., 342., 344., 346., 348., 350., 352., 354., 356., 358.],\n", " dtype=float32)
array(['1854-01-01T00:00:00.000000000', '1854-02-01T00:00:00.000000000',\n", " '1854-03-01T00:00:00.000000000', ..., '2021-01-01T00:00:00.000000000',\n", " '2021-02-01T00:00:00.000000000', '2021-03-01T00:00:00.000000000'],\n", " dtype='datetime64[ns]')
[32152140 values with dtype=float32]
<xarray.DataArray 'sst' (time: 2007, lat: 89, lon: 180)>\n", "[32152140 values with dtype=float32]\n", "Coordinates:\n", " * lat (lat) float32 88.0 86.0 84.0 82.0 80.0 ... -82.0 -84.0 -86.0 -88.0\n", " * lon (lon) float32 0.0 2.0 4.0 6.0 8.0 ... 350.0 352.0 354.0 356.0 358.0\n", " * time (time) datetime64[ns] 1854-01-01 1854-02-01 ... 2021-03-01\n", "Attributes:\n", " long_name: Monthly Means of Sea Surface Temperature\n", " units: degC\n", " var_desc: Sea Surface Temperature\n", " level_desc: Surface\n", " statistic: Mean\n", " dataset: NOAA Extended Reconstructed SST V5\n", " parent_stat: Individual Values\n", " actual_range: [-1.8 42.32636]\n", " valid_range: [-1.8 45. ]\n", " _ChunkSizes: [ 1 89 180]
[32152140 values with dtype=float32]
array([ 88., 86., 84., 82., 80., 78., 76., 74., 72., 70., 68., 66.,\n", " 64., 62., 60., 58., 56., 54., 52., 50., 48., 46., 44., 42.,\n", " 40., 38., 36., 34., 32., 30., 28., 26., 24., 22., 20., 18.,\n", " 16., 14., 12., 10., 8., 6., 4., 2., 0., -2., -4., -6.,\n", " -8., -10., -12., -14., -16., -18., -20., -22., -24., -26., -28., -30.,\n", " -32., -34., -36., -38., -40., -42., -44., -46., -48., -50., -52., -54.,\n", " -56., -58., -60., -62., -64., -66., -68., -70., -72., -74., -76., -78.,\n", " -80., -82., -84., -86., -88.], dtype=float32)
array([ 0., 2., 4., 6., 8., 10., 12., 14., 16., 18., 20., 22.,\n", " 24., 26., 28., 30., 32., 34., 36., 38., 40., 42., 44., 46.,\n", " 48., 50., 52., 54., 56., 58., 60., 62., 64., 66., 68., 70.,\n", " 72., 74., 76., 78., 80., 82., 84., 86., 88., 90., 92., 94.,\n", " 96., 98., 100., 102., 104., 106., 108., 110., 112., 114., 116., 118.,\n", " 120., 122., 124., 126., 128., 130., 132., 134., 136., 138., 140., 142.,\n", " 144., 146., 148., 150., 152., 154., 156., 158., 160., 162., 164., 166.,\n", " 168., 170., 172., 174., 176., 178., 180., 182., 184., 186., 188., 190.,\n", " 192., 194., 196., 198., 200., 202., 204., 206., 208., 210., 212., 214.,\n", " 216., 218., 220., 222., 224., 226., 228., 230., 232., 234., 236., 238.,\n", " 240., 242., 244., 246., 248., 250., 252., 254., 256., 258., 260., 262.,\n", " 264., 266., 268., 270., 272., 274., 276., 278., 280., 282., 284., 286.,\n", " 288., 290., 292., 294., 296., 298., 300., 302., 304., 306., 308., 310.,\n", " 312., 314., 316., 318., 320., 322., 324., 326., 328., 330., 332., 334.,\n", " 336., 338., 340., 342., 344., 346., 348., 350., 352., 354., 356., 358.],\n", " dtype=float32)
array(['1854-01-01T00:00:00.000000000', '1854-02-01T00:00:00.000000000',\n", " '1854-03-01T00:00:00.000000000', ..., '2021-01-01T00:00:00.000000000',\n", " '2021-02-01T00:00:00.000000000', '2021-03-01T00:00:00.000000000'],\n", " dtype='datetime64[ns]')