larray.where

larray.where(condition, x, y)

Return elements, either from x or y, depending on condition.

Parameters:
condition : boolean Array

When True, yield x, otherwise yield y.

x, y : Array

Values from which to choose.

Returns:
out : Array

If both x and y are specified, the output array contains elements of x where condition is True, and elements from y elsewhere.

Examples

>>> from larray import Array
>>> arr = Array([[10, 7, 5, 9],
...               [5, 8, 3, 7],
...               [6, 2, 0, 9],
...               [9, 10, 5, 6]], "a=a0..a3;b=b0..b3")
>>> arr
a\b  b0  b1  b2  b3
 a0  10   7   5   9
 a1   5   8   3   7
 a2   6   2   0   9
 a3   9  10   5   6

Simple use

>>> where(arr <= 5, 0, arr)
a\b  b0  b1  b2  b3
 a0  10   7   0   9
 a1   0   8   0   7
 a2   6   0   0   9
 a3   9  10   0   6

With broadcasting

>>> mean_by_col = arr.mean('a')
>>> mean_by_col
b   b0    b1    b2    b3
   7.5  6.75  3.25  7.75
>>> # for each column, set values below the mean value to the mean value
>>> where(arr < mean_by_col, mean_by_col, arr)
a\b    b0    b1    b2    b3
 a0  10.0   7.0   5.0   9.0
 a1   7.5   8.0  3.25  7.75
 a2   7.5  6.75  3.25   9.0
 a3   9.0  10.0   5.0  7.75