scipp.where#
- scipp.where(condition, x, y)#
Return elements chosen from x or y depending on condition.
- Parameters:
- Returns:
Variable|DataArray– Array with elements from x where condition is True and elements from y elsewhere.
Examples
Select values based on a condition:
>>> import scipp as sc >>> x = sc.array(dims=['x'], values=[1.0, 2.0, 3.0, 4.0, 5.0], unit='m') >>> condition = x > sc.scalar(3.0, unit='m') >>> condition <scipp.Variable> (x: 5) bool <no unit> [False, False, ..., True, True] >>> y = sc.array(dims=['x'], values=[10.0, 20.0, 30.0, 40.0, 50.0], unit='m') >>> z = sc.array(dims=['x'], values=[100.0, 200.0, 300.0, 400.0, 500.0], unit='m') >>> sc.where(condition, y, z) <scipp.Variable> (x: 5) float64 [m] [100, 200, ..., 40, 50]
With a DataArray, coordinates are preserved:
>>> da1 = sc.DataArray( ... data=sc.array(dims=['x'], values=[1, 2, 3], unit='K'), ... coords={'x': sc.arange('x', 3, unit='m')} ... ) >>> da2 = sc.DataArray( ... data=sc.array(dims=['x'], values=[10, 20, 30], unit='K'), ... coords={'x': sc.arange('x', 3, unit='m')} ... ) >>> cond = sc.array(dims=['x'], values=[True, False, True]) >>> sc.where(cond, da1, da2) <scipp.DataArray> Dimensions: Sizes[x:3, ] Coordinates: * x int64 [m] (x) [0, 1, 2] Data: int64 [K] (x) [1, 20, 3]