Skip to main content
`Ctrl`+`K`

# Masking Values in Time Series

Warning

Note that masking does not yet work for columns that have units.

Masking values is done in the same way as for |Table| objects (see Masking and Missing Values). The most convenient way to use masking is to initialize a |TimeSeries| object using the `masked=True` option.

## Example

We start by initializing a |TimeSeries| object with `masked=True`:

    >>> from astropy import units as u
    >>> from astropy.timeseries import TimeSeries
    >>> ts = TimeSeries(time_start='2016-03-22T12:30:31',
    ...                 time_delta=3 * u.s,
    ...                 n_samples=5, masked=True)

We can now add some data to our time series:

    >>> ts['flux'] = [1., -2., 5., -1., 4.]

As you can see, some of the values are negative. We can mask these using:

    >>> ts['flux'].mask = ts['flux'] < 0
    >>> ts
    <TimeSeries masked=True length=5>
              time            flux
              Time          float64
    ----------------------- -------
    2016-03-22T12:30:31.000     1.0
    2016-03-22T12:30:34.000      --
    2016-03-22T12:30:37.000     5.0
    2016-03-22T12:30:40.000      --
    2016-03-22T12:30:43.000     4.0

We can also access the mask values:

    >>> ts['flux'].mask
    array([False,  True, False,  True, False]...)

Masks are column-based, so masking a single cell does not mask the whole row. Having masked cells then allows functions that normally understand masked values and operate on columns to ignore the masked entries:

    >>> import numpy as np
    >>> np.min(ts['flux'])
    np.float64(1.0)
    >>> np.ma.median(ts['flux'])
    np.float64(4.0)