larray.AxisCollection.split_axes

AxisCollection.split_axes(axes=None, sep='_', names=None, regex=None) AxisCollection[source]

Split axes and returns a new collection.

The split axes are inserted where the combined axis was.

Parameters
axesint, str, Axis or any combination of those, optional

axes to split. All labels must contain the given delimiter string. To split several axes at once, pass a list or tuple of axes to split. To set the names of resulting axes, use a {‘axis_to_split’: (new, axes)} dictionary. Defaults to all axes whose name contains the sep delimiter.

sepstr, optional

delimiter to use for splitting. Defaults to ‘_’. When regex is provided, the delimiter is only used on names if given as one string or on axis name if names is None.

namesstr or list of str, optional

names of resulting axes. Defaults to None.

regexstr, optional

use the regex regular expression to split labels instead of the sep delimiter. Defaults to None.

Returns
AxisCollection

Examples

>>> col = AxisCollection('a=a0,a1;b=b0..b2')
>>> col
AxisCollection([
    Axis(['a0', 'a1'], 'a'),
    Axis(['b0', 'b1', 'b2'], 'b')
])
>>> combined = col.combine_axes()
>>> combined
AxisCollection([
    Axis(['a0_b0', 'a0_b1', 'a0_b2', 'a1_b0', 'a1_b1', 'a1_b2'], 'a_b')
])
>>> combined.split_axes()
AxisCollection([
    Axis(['a0', 'a1'], 'a'),
    Axis(['b0', 'b1', 'b2'], 'b')
])

Split labels using a regular expression

>>> combined = AxisCollection('ab = a0b0..a1b2')
>>> combined
AxisCollection([
    Axis(['a0b0', 'a0b1', 'a0b2', 'a1b0', 'a1b1', 'a1b2'], 'ab')
])
>>> # The pattern for each resulting axis should be enclosed in parentheses
>>> combined.split_axes('ab', names=['a', 'b'], regex=r'(..)(..)')
AxisCollection([
    Axis(['a0', 'a1'], 'a'),
    Axis(['b0', 'b1', 'b2'], 'b')
])

Split several axes at once

>>> combined = AxisCollection('a_b = a0_b0..a1_b1; c_d = c0_d0..c1_d1')
>>> combined
AxisCollection([
    Axis(['a0_b0', 'a0_b1', 'a1_b0', 'a1_b1'], 'a_b'),
    Axis(['c0_d0', 'c0_d1', 'c1_d0', 'c1_d1'], 'c_d')
])
>>> # equivalent to combined.split_axes() which split all axes
>>> # containing the delimiter defined by the argument `sep`
>>> combined.split_axes(['a_b', 'c_d'])
AxisCollection([
    Axis(['a0', 'a1'], 'a'),
    Axis(['b0', 'b1'], 'b'),
    Axis(['c0', 'c1'], 'c'),
    Axis(['d0', 'd1'], 'd')
])
>>> combined.split_axes({'a_b': ('A', 'B'), 'c_d': ('C', 'D')})
AxisCollection([
    Axis(['a0', 'a1'], 'A'),
    Axis(['b0', 'b1'], 'B'),
    Axis(['c0', 'c1'], 'C'),
    Axis(['d0', 'd1'], 'D')
])