Datasets can be combined along the items and time axis
import matplotlib.pyplot as plt
import mikeio
from mikeio import Dataset
ds1 = mikeio.read("../tests/testdata/tide1.dfs1")
ds1
<mikeio.Dataset> Dimensions: (97, 10) Time: 2019-01-01 00:00:00 - 2019-01-03 00:00:00 Items: 0: Level <Water Level> (meter)
ds2 = mikeio.read("../tests/testdata/tide2.dfs1") + 0.5 # add offset
ds2
<mikeio.Dataset> Dimensions: (97, 10) Time: 2019-01-02 00:00:00 - 2019-01-04 00:00:00 Items: 0: Level <Water Level> (meter)
Concatenating data along the time axis can be done in two ways:
ds3 = Dataset.combine(ds1, ds2) # same as ds1._concat_time(ds2)
ds3
<mikeio.Dataset> Dimensions: (145, 10) Time: 2019-01-01 00:00:00 - 2019-01-04 00:00:00 Items: 0: Level <Water Level> (meter)
plt.plot(ds1.time, ds1.data[0][:,1], 'ro', label="Dataset 1")
plt.plot(ds2.time, ds2.data[0][:,1], 'k+', label="Dataset 2")
plt.plot(ds3.time, ds3.data[0][:,1], 'g-', label="Dataset 3")
plt.title("Notice the offset...")
plt.legend();
ds1.concat(ds2, inplace=True) # do it inplace instead
ds1
<mikeio.Dataset> Dimensions: (145, 10) Time: 2019-01-01 00:00:00 - 2019-01-04 00:00:00 Items: 0: Level <Water Level> (meter)
dsA = mikeio.read("../tests/testdata/tide1.dfs1")
dsA.items
[Level <Water Level> (meter)]
dsB = dsA.copy()
dsB.items[0].name = 'Other_level'
dsB = dsB + 2
dsB.items
[Other_level <Water Level> (meter)]
Appending items can be done in two ways:
dsC = Dataset.combine(dsA, dsB)
dsC.items
[Level <Water Level> (meter), Other_level <Water Level> (meter)]
dsC.data[0].mean(), dsC.data[1].mean()
(0.06780668046498269, 2.0678066804649826)
dsA.append_items(dsB, inplace=True) # do it inplace instead
dsA
<mikeio.Dataset> Dimensions: (97, 10) Time: 2019-01-01 00:00:00 - 2019-01-03 00:00:00 Items: 0: Level <Water Level> (meter) 1: Other_level <Water Level> (meter)