# xtensor

Defined in `xtensor/xtensor.hpp`

template<class EC, std::size_t N, layout_type L, class Tag>
class xt::xtensor_container : public xt::xstrided_container<xtensor_container<EC, N, L, Tag>>, public xt::xcontainer_semantic<xtensor_container<EC, N, L, Tag>>, public extension::xtensor_container_base_t<EC, N, L, Tag>

  Dense multidimensional container with tensor semantic and fixed dimension.

  The xtensor_container class implements a dense multidimensional container with tensor semantics and fixed dimension

  See

    xtensor, xstrided_container, xcontainer

  tparam EC

    The type of the container holding the elements.

  tparam N

    The dimension of the container.

  tparam L

    The layout_type of the tensor.

  tparam Tag

    The expression tag.

  Constructors

  inline xtensor_container()

    Allocates an uninitialized xtensor_container that holds 0 elements.

  inline xtensor_container(nested_initializer_list_t<value_type, N> t)

    Allocates an xtensor_container with nested initializer lists.

  inline explicit xtensor_container(const shape_type &shape, layout_type l = L)

    Allocates an uninitialized xtensor_container with the specified shape and layout_type.

    Parameters

      - shape – the shape of the xtensor_container

      - l – the layout_type of the xtensor_container

  inline explicit xtensor_container(const shape_type &shape, const_reference value, layout_type l = L)

    Allocates an xtensor_container with the specified shape and layout_type.

    Elements are initialized to the specified value.

    Parameters

      - shape – the shape of the xtensor_container

      - value – the value of the elements

      - l – the layout_type of the xtensor_container

  inline explicit xtensor_container(const shape_type &shape, const strides_type &strides)

    Allocates an uninitialized xtensor_container with the specified shape and strides.

    Parameters

      - shape – the shape of the xtensor_container

      - strides – the strides of the xtensor_container

  inline explicit xtensor_container(const shape_type &shape, const strides_type &strides, const_reference value)

    Allocates an uninitialized xtensor_container with the specified shape and strides.

    Elements are initialized to the specified value.

    Parameters

      - shape – the shape of the xtensor_container

      - strides – the strides of the xtensor_container

      - value – the value of the elements

  inline explicit xtensor_container(storage_type &&storage, inner_shape_type &&shape, inner_strides_type &&strides)

    Allocates an xtensor_container by moving specified data, shape and strides.

    Parameters

      - storage – the data for the xtensor_container

      - shape – the shape of the xtensor_container

      - strides – the strides of the xtensor_container

  Extended copy semantic

  template<class E>
  inline xtensor_container(const xexpression<E> &e)

    The extended copy constructor.

  template<class E>
  inline auto operator=(const xexpression<E> &e) -> self_type&

    The extended assignment operator.

typedef xtensor_container<uvector<T, A>, N, L> xt::xtensor

  Alias template on xtensor_container with default parameters for data container type.

  This allows to write

      xt::xtensor<double, 2> a = {{1., 2.}, {3., 4.}};

  instead of the heavier syntax

      xt::xtensor_container<std::vector<double>, 2> a = ...

  Template Parameters

    - T – The value type of the elements.

    - N – The dimension of the tensor.

    - L – The layout_type of the tensor (default: XTENSOR_DEFAULT_LAYOUT).

    - A – The allocator of the containers holding the elements.

typedef xtensor_container<xtl::xoptional_vector<T, A, BC>, N, L, xoptional_expression_tag> xt::xtensor_optional

  Alias template on xtensor_container for handling missing values.

  Template Parameters

    - T – The value type of the elements.

    - N – The dimension of the tensor.

    - L – The layout_type of the container (default: XTENSOR_DEFAULT_LAYOUT).

    - A – The allocator of the containers holding the elements.

    - BA – The allocator of the container holding the missing flags.

template<class T>
inline auto xt::from_indices(const std::vector<T> &idx)

  Converts `std::vector<index_type>` (returned e.g.

  from `xt::argwhere`) to `xtensor`.

  Parameters

    idx – vector of indices

  Returns

    `xt::xtensor<typename index_type::value_type, 2>` (e.g. `xt::xtensor<size_t, 2>`)

template<class T>
inline auto xt::flatten_indices(const std::vector<T> &idx)

  Converts `std::vector<index_type>` (returned e.g.

  from `xt::argwhere`) to a flattened `xtensor`.

  Parameters

    idx – a vector of indices

  Returns

    `xt::xtensor<typename index_type::value_type, 1>` (e.g. `xt::xtensor<size_t, 1>`)

template<class Tag = ravel_tensor_tag, class C, class S>
ravel_return_type_t<C, Tag> xt::ravel_indices(const C &idx, const S &shape, layout_type l = layout_type::row_major)

  Converts `std::vector<index_type>` (returned e.g.

  from `xt::argwhere`) to `xtensor` whereby the indices are ravelled. For 1-d input there is no conversion.

  Parameters

    - idx – vector of indices

    - shape – the shape of the original array

    - l – the layout type (row-major or column-major)

  Returns

    `xt::xtensor<typename index_type::value_type, 1>` (e.g. `xt::xtensor<size_t, 1>`)