select

function of dascore.proc.coords source

select(
    patch: Patch ,
    copy = False,
    relative = False,
    samples = False,
    **kwargs ,
)-> ‘PatchType’

Return a subset of the patch.

Any dimension name can be passed as key, and the values can be: - a Slice or a tuple of (min, max) for that dimension. None and … both indicate open intervals. - an array of values to select, which must be a subset of the coordinate array. - an array of booleans of the same length as the coordinate where True indicates values to keep.

Parameters

Parameter Description
patch The patch object.
copy If True, copy the resulting data. This is needed so the old
array can get gc’ed and memory freed.
relative If True, select ranges are relative to the start of coordinate, if
possitive, or the end of the coordinate, if negative.
samples If True, the query meaning is in samples.
**kwargs Used to specify the coordinate on which data are selected.

Examples

import numpy as np
import dascore as dc
from dascore.examples import get_example_patch
patch = get_example_patch()
# select meters 50 to 300
new_distance = patch.select(distance=(50, 300))
# select channels less than 300
lt_dist = patch.select(distance=(..., 300))
# select time (1 second from start to -1 second from end)
t1 = patch.attrs.time_min + dc.to_timedelta64(1)
t2 = patch.attrs.time_max - dc.to_timedelta64(1)
new_time1 = patch.select(time=(t1, t2))
# this can be accomplished more simply using the relative keyword
new_time2 = patch.select(time=(1, -1), relative=True)
# filter 1 second from start time to 3 seconds from start time
new_time3 = patch.select(time=(1, 3), relative=True)
# filter 6 second from end time to 1 second from end time
new_time4 = patch.select(time=(-6, -1), relative=True)
# Select first 10 distance indices
new_distance1 = patch.select(distance=(..., 10), samples=True)
# Select last time row/column
new_distance2 = patch.select(time=-1, samples=True)
# only include certain rows/columns based on a boolean array.
time = patch.get_array("time")
new_time_5 = patch.select(time=time>time[2])
# Select only specific values along a dimension
distance = patch.get_array("distance")
new_distance_3 = patch.select(distace=distance[1::2])
Note
  • It is important to remember select will not change the order of the patch, only fiter values. If the order of the patch should change, or multiple rows/columns need to be repeated, See Patch.order.