Reading data from objects¶
[1]:
import numpy as np
import xarray as xr
import earthkit.data as ekd
We can read Python objects into an earthkit-data object using from_object().
First, we create Numpy and Xarray input data.
[2]:
# demo ndarray
demo_ndarray = np.random.rand(10, 10) * 10.0
demo_lats = np.arange(0, 91, 10)
demo_lons = np.arange(0, 91, 10)
# demo Xarray
demo_da = xr.DataArray(
demo_ndarray,
name="temperature",
dims={"latitude": demo_lats, "longitude": demo_lons},
attrs={"units": "Celsius", "standard_name": "air_temperature"},
)
demo_ds = demo_da.to_dataset().assign_attrs({"purpose": "Demonstration", "source": "EarthkitExamples"})
demo_ds
[2]:
<xarray.Dataset> Size: 800B
Dimensions: (latitude: 10, longitude: 10)
Dimensions without coordinates: latitude, longitude
Data variables:
temperature (latitude, longitude) float64 800B 3.582 7.83 ... 5.611 8.344
Attributes:
purpose: Demonstration
source: EarthkitExamplesNumpy input¶
[3]:
d = ekd.from_object(demo_ndarray)
d
[3]:
Numpy ndarray
| types | numpy, array, xarray |
[4]:
d.to_numpy()
[4]:
array([[3.58239996, 7.82952525, 7.16446508, 2.45455418, 2.51743456,
8.7466854 , 8.39202894, 1.48241861, 4.18474628, 0.94557965],
[2.19310807, 2.76649207, 8.68856398, 1.20906689, 5.63218275,
7.05900755, 1.38402142, 6.36558534, 7.54561089, 0.33634944],
[7.78479759, 9.92776192, 1.63048253, 1.93581213, 8.22070832,
3.60894429, 0.58851499, 2.97581417, 3.36072416, 1.92186047],
[4.02714977, 0.64611663, 4.97723198, 5.96535124, 0.96764506,
2.90902311, 5.46981587, 0.21649453, 8.02339109, 6.70736337],
[0.0934673 , 1.04057399, 6.11501719, 2.02902052, 9.28022957,
8.33913653, 4.95151308, 6.05864839, 7.9953914 , 0.80303781],
[1.17101096, 1.28359041, 6.1667969 , 4.27254808, 2.31924362,
6.58375093, 9.39323667, 2.96271812, 9.14626319, 8.13418819],
[1.48497286, 9.95270836, 8.39722797, 8.24838608, 1.37304124,
3.35725063, 0.51897333, 9.31637346, 7.05903085, 6.0759565 ],
[5.36164705, 7.54945446, 1.5477877 , 3.70636708, 0.26129773,
7.57590019, 7.92360869, 9.89528306, 6.61410484, 1.52168687],
[9.91601807, 7.20307348, 2.52454033, 1.21089167, 5.57766104,
4.08519214, 1.31204341, 0.44453396, 5.58328631, 0.8496902 ],
[8.80126644, 5.1888672 , 5.27665322, 8.59729147, 6.33045073,
3.76713045, 3.21542184, 2.63099394, 5.61083501, 8.34354129]])
Xarray input¶
[5]:
d = ekd.from_object(demo_da)
d
[5]:
Xarray DataArray
| types | xarray, pandas, fieldlist, numpy, array |
[6]:
d.to_xarray()
[6]:
<xarray.DataArray 'temperature' (latitude: 10, longitude: 10)> Size: 800B
array([[3.58239996, 7.82952525, 7.16446508, 2.45455418, 2.51743456,
8.7466854 , 8.39202894, 1.48241861, 4.18474628, 0.94557965],
[2.19310807, 2.76649207, 8.68856398, 1.20906689, 5.63218275,
7.05900755, 1.38402142, 6.36558534, 7.54561089, 0.33634944],
[7.78479759, 9.92776192, 1.63048253, 1.93581213, 8.22070832,
3.60894429, 0.58851499, 2.97581417, 3.36072416, 1.92186047],
[4.02714977, 0.64611663, 4.97723198, 5.96535124, 0.96764506,
2.90902311, 5.46981587, 0.21649453, 8.02339109, 6.70736337],
[0.0934673 , 1.04057399, 6.11501719, 2.02902052, 9.28022957,
8.33913653, 4.95151308, 6.05864839, 7.9953914 , 0.80303781],
[1.17101096, 1.28359041, 6.1667969 , 4.27254808, 2.31924362,
6.58375093, 9.39323667, 2.96271812, 9.14626319, 8.13418819],
[1.48497286, 9.95270836, 8.39722797, 8.24838608, 1.37304124,
3.35725063, 0.51897333, 9.31637346, 7.05903085, 6.0759565 ],
[5.36164705, 7.54945446, 1.5477877 , 3.70636708, 0.26129773,
7.57590019, 7.92360869, 9.89528306, 6.61410484, 1.52168687],
[9.91601807, 7.20307348, 2.52454033, 1.21089167, 5.57766104,
4.08519214, 1.31204341, 0.44453396, 5.58328631, 0.8496902 ],
[8.80126644, 5.1888672 , 5.27665322, 8.59729147, 6.33045073,
3.76713045, 3.21542184, 2.63099394, 5.61083501, 8.34354129]])
Dimensions without coordinates: latitude, longitude
Attributes:
units: Celsius
standard_name: air_temperature[7]:
d.to_pandas()
[7]:
| temperature | ||
|---|---|---|
| latitude | longitude | |
| 0 | 0 | 3.582400 |
| 1 | 7.829525 | |
| 2 | 7.164465 | |
| 3 | 2.454554 | |
| 4 | 2.517435 | |
| ... | ... | ... |
| 9 | 5 | 3.767130 |
| 6 | 3.215422 | |
| 7 | 2.630994 | |
| 8 | 5.610835 | |
| 9 | 8.343541 |
100 rows × 1 columns
[8]:
d = ekd.from_object(demo_ds)
d
[8]:
Xarray Dataset
| types | xarray, pandas, fieldlist, numpy, array |
[9]:
d.to_xarray()
[9]:
<xarray.Dataset> Size: 800B
Dimensions: (latitude: 10, longitude: 10)
Dimensions without coordinates: latitude, longitude
Data variables:
temperature (latitude, longitude) float64 800B 3.582 7.83 ... 5.611 8.344
Attributes:
purpose: Demonstration
source: EarthkitExamples[10]:
d.to_pandas()
[10]:
| temperature | ||
|---|---|---|
| latitude | longitude | |
| 0 | 0 | 3.582400 |
| 1 | 7.829525 | |
| 2 | 7.164465 | |
| 3 | 2.454554 | |
| 4 | 2.517435 | |
| ... | ... | ... |
| 9 | 5 | 3.767130 |
| 6 | 3.215422 | |
| 7 | 2.630994 | |
| 8 | 5.610835 | |
| 9 | 8.343541 |
100 rows × 1 columns