NaN functions

xtensor provides the following functions that deal with NaNs in xexpressions:

Defined in xtensor/xmath.hpp

template<class E>
auto xt::nan_to_num(E &&e)

Convert nan or +/- inf to numbers.

This functions converts nan to 0, and +inf to the highest, -inf to the lowest floating point value of the same type.

Return

an xexpression

Parameters

template<class T = void, class E, class X, class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept<xtl::negation<is_reducer_options<X>>, xtl::negation<xtl::is_integral<X>>> = 0>
auto xt::nansum(E &&e, X &&axes, EVS es = EVS())

Sum of elements over given axes, replacing nan with 0.

Returns an xreducer for the sum of elements over given axes, replacing nan with 0.

Return

an xreducer

Parameters
  • e: an xexpression

  • axes: the axes along which the sum is performed (optional)

  • es: evaluation strategy of the reducer (optional)

Template Parameters
  • T: the value type used for internal computation. The default is E::value_type. T is also used for determining the value type of the result, which is the type of T() + E::value_type(). You can pass big_promote_value_type_t<E> to avoid overflow in computation.

template<class T = void, class E, class X, class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept<xtl::negation<is_reducer_options<X>>, xtl::negation<xtl::is_integral<X>>> = 0>
auto xt::nanprod(E &&e, X &&axes, EVS es = EVS())

Product of elements over given axes, replacing nan with 1.

Returns an xreducer for the sum of elements over given axes, replacing nan with 1.

Return

an xreducer

Parameters
  • e: an xexpression

  • axes: the axes along which the sum is performed (optional)

  • es: evaluation strategy of the reducer (optional)

Template Parameters
  • T: the value type used for internal computation. The default is E::value_type. T is also used for determining the value type of the result, which is the type of T() * E::value_type(). You can pass big_promote_value_type_t<E> to avoid overflow in computation.

template<class T = void, class E>
auto xt::nancumsum(E &&e)
template<class T = void, class E>
auto xt::nancumsum(E &&e, std::ptrdiff_t axis)

Cumulative sum, replacing nan with 0.

Returns an xaccumulator for the sum of elements over given axis, replacing nan with 0.

Return

an xaccumulator

Parameters
  • e: an xexpression

  • axis: the axis along which the elements are accumulated (optional)

Template Parameters
  • T: the value type used for internal computation. The default is E::value_type. T is also used for determining the value type of the result, which is the type of T() + E::value_type(). You can pass big_promote_value_type_t<E> to avoid overflow in computation.

template<class T = void, class E>
auto xt::nancumprod(E &&e)
template<class T = void, class E>
auto xt::nancumprod(E &&e, std::ptrdiff_t axis)

Cumulative product, replacing nan with 1.

Returns an xaccumulator for the product of elements over given axis, replacing nan with 1.

Return

an xaccumulator

Parameters
  • e: an xexpression

  • axis: the axis along which the elements are accumulated (optional)

Template Parameters
  • T: the value type used for internal computation. The default is E::value_type. T is also used for determining the value type of the result, which is the type of T() * E::value_type(). You can pass big_promote_value_type_t<E> to avoid overflow in computation.