org.apache.ignite.ml.math.primitives.vector

## Interface Vector

- All Superinterfaces:
    Destroyable, Externalizable, MetaAttributes, Serializable, StorageOpsMetrics
  All Known Subinterfaces:
    NamedVector
  All Known Implementing Classes:
    AbstractVector, DelegatingNamedVector, DelegatingVector, DenseVector, SparseVector, VectorizedViewMatrix, VectorView

      public interface Vector
      extends MetaAttributes, Externalizable, StorageOpsMetrics, Destroyable

  A vector interface. Based on its flavor it can have vastly different implementations tailored for for different types of data (e.g. dense vs. sparse), different sizes of data or different operation optimizations. Note also that not all operations can be supported by all underlying implementations. If an operation is not supported a `UnsupportedOperationException` is thrown. This exception can also be thrown in partial cases where an operation is unsupported only in special cases, e.g. where a given operation cannot be deterministically completed in polynomial time. Based on ideas from Apache Mahout.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static interface` | `Vector.Element` Holder for vector's element.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `Iterable<Vector.Element>` | `all()` Gets iterator over all elements in this vector.
    `Spliterator<Double>` | `allSpliterator()` Gets spliterator for all values in this vector.
    `default double[]` | `asArray()` Returns array of doubles corresponds to vector components.
    `Vector` | `assign(double val)` Assigns given value to all elements of this vector.
    `Vector` | `assign(double[] vals)` Assigns values from given array to this vector.
    `Vector` | `assign(IntToDoubleFunction fun)` Assigns each vector element to the value generated by given function.
    `Vector` | `assign(Vector vec)` Copies values from the argument vector to this one.
    `void` | `compute(int i, IgniteIntDoubleToDoubleBiFunction f)` Replace vector entry with value oldVal at i with result of computing f(i, oldVal).
    `Vector` | `copy()` Creates new copy of this vector.
    `Vector` | `copyOfRange(int from, int to)` Copies the specified range of the vector into a new vector.
    `Matrix` | `cross(Vector vec)` Gets the cross product of this vector and the other vector.
    `Vector` | `divide(double x)` Creates new vector containing values from this vector divided by the argument.
    `double` | `dot(Vector vec)` Gets dot product of two vectors.
    `<T> T` | `foldMap(IgniteBiFunction<T,Double,T> foldFun, IgniteDoubleFunction<Double> mapFun, T zeroVal)` Folds this vector into a single value.
    `<T> T` | `foldMap(Vector vec, IgniteBiFunction<T,Double,T> foldFun, IgniteBiFunction<Double,Double,Double> combFun, T zeroVal)` Combines & maps two vector and folds them into a single value.
    `double` | `get(int idx)` Gets the value at specified index.
    `double` | `getDistanceSquared(Vector vec)` Get the square of the distance between this vector and the argument vector.
    `Vector.Element` | `getElement(int idx)` Gets element at the given index.
    `double` | `getLengthSquared()` Gets the sum of squares of all elements in this vector.
    `<T extends Serializable> T` | `getRaw(int idx)` Gets the value at specified index.
    `<T extends Serializable> T` | `getRawX(int idx)` Gets the value at specified index without checking for index boundaries.
    `VectorStorage` | `getStorage()` Gets vector storage model.
    `double` | `getX(int idx)` Gets the value at specified index without checking for index boundaries.
    `IgniteUuid` | `guid()` Auto-generated globally unique vector ID.
    `Vector` | `increment(int idx, double val)` Increments value at given index.
    `Vector` | `incrementX(int idx, double val)` Increments value at given index without checking for index boundaries.
    `double` | `kNorm(double power)` Gets the k-norm of the vector.
    `default <L> LabeledVector<L>` | `labeled(L lbl)` Creates `LabeledVector` instance.
    `Vector` | `like(int crd)` Creates new empty vector of the same underlying class but of different cardinality.
    `Matrix` | `likeMatrix(int rows, int cols)` Creates new matrix of compatible flavor with given size.
    `Vector` | `logNormalize()` Creates new vector containing the `log(1 + entry) / L_2 norm` values of this vector.
    `Vector` | `logNormalize(double power)` Creates new vector with a normalized value calculated as `log_power(1 + entry) / L_power norm`.
    `Vector` | `map(IgniteBiFunction<Double,Double,Double> fun, double y)` Maps all elements of this vector by applying given function to each element with a constant second parameter `y`.
    `Vector` | `map(IgniteDoubleFunction<Double> fun)` Maps all values in this vector through a given function.
    `Vector` | `map(Vector vec, IgniteBiFunction<Double,Double,Double> fun)` Maps all values in this vector through a given function.
    `Vector.Element` | `maxElement()` Gets maximum element in this vector.
    `double` | `maxValue()` Gets maximum value in this vector.
    `Vector.Element` | `minElement()` Gets minimal element in this vector.
    `Vector` | `minus(Vector vec)` Creates new vector containing element by element difference between this vector and the argument one.
    `double` | `minValue()` Gets minimal value in this vector.
    `int` | `nonZeroElements()` Gets number of non-zero elements in this vector.
    `Iterable<Vector.Element>` | `nonZeroes()` Iterates ove all non-zero elements in this vector.
    `Spliterator<Double>` | `nonZeroSpliterator()` Gets spliterator for all non-zero values in this vector.
    `Vector` | `normalize()` Creates new vector containing the normalized (L_2 norm) values of this vector.
    `Vector` | `normalize(double power)` Creates new vector containing the normalized (L_power norm) values of this vector.
    `Vector` | `plus(double x)` Creates new vector containing sum of each element in this vector and argument.
    `Vector` | `plus(Vector vec)` Creates new vector containing element by element sum from both vectors.
    `Vector` | `set(int idx, double val)` Sets value.
    `Vector` | `setRaw(int idx, Serializable val)` Sets value.
    `Vector` | `setRawX(int idx, Serializable val)` Sets value without checking for index boundaries.
    `Vector` | `setX(int idx, double val)` Sets value without checking for index boundaries.
    `int` | `size()` Gets cardinality of this vector (maximum number of the elements).
    `Vector` | `sort()` Sorts this vector in ascending order.
    `double` | `sum()` Gets the sum of all elements in this vector.
    `Vector` | `times(double x)` Gets a new vector that contains product of each element and the argument.
    `Vector` | `times(Vector vec)` Gets a new vector that is an element-wie product of this vector and the argument.
    `Matrix` | `toMatrix(boolean rowLike)` Converts this vector into [N x 1] or [1 x N] matrix where N is this vector cardinality.
    `Matrix` | `toMatrixPlusOne(boolean rowLike, double zeroVal)` Converts this vector into [N+1 x 1] or [1 x N+1] matrix where N is this vector cardinality
    `Vector` | `viewPart(int off, int len)`

    - ### Methods inherited from interface org.apache.ignite.ml.math.MetaAttributes

      `getAttribute, getMetaStorage, hasAttribute, removeAttribute, setAttribute`

    - ### Methods inherited from interface java.io.Externalizable

      `readExternal, writeExternal`

    - ### Methods inherited from interface org.apache.ignite.ml.math.StorageOpsMetrics

      `isArrayBased, isDense, isNumeric`

    - ### Methods inherited from interface org.apache.ignite.ml.math.Destroyable

      `destroy`

- - ### Method Detail

    - #### size

          int size()

      Gets cardinality of this vector (maximum number of the elements).
      Returns:
        This vector's cardinality.

    - #### copy

          Vector copy()

      Creates new copy of this vector.
      Returns:
        New copy vector.

    - #### all

          Iterable<Vector.Element> all()

      Gets iterator over all elements in this vector. NOTE: implementation can choose to reuse `Vector.Element` instance so you need to copy it if you want to retain it outside of iteration.
      Returns:
        Iterator.

    - #### nonZeroes

          Iterable<Vector.Element> nonZeroes()

      Iterates ove all non-zero elements in this vector. NOTE: implementation can choose to reuse `Vector.Element` instance so you need to copy it if you want to retain it outside of iteration.
      Returns:
        Iterator.

    - #### allSpliterator

          Spliterator<Double> allSpliterator()

      Gets spliterator for all values in this vector.
      Returns:
        Spliterator for all values.

    - #### nonZeroSpliterator

          Spliterator<Double> nonZeroSpliterator()

      Gets spliterator for all non-zero values in this vector.
      Returns:
        Spliterator for all non-zero values.

    - #### sort

          Vector sort()

      Sorts this vector in ascending order.

    - #### copyOfRange

          Vector copyOfRange(int from,
                             int to)

      Copies the specified range of the vector into a new vector.
      Parameters:
        `from` - the initial index of the range to be copied, inclusive
        `to` - the final index of the range to be copied, exclusive. (This index may lie outside the array.)
      Returns:
        A new vector containing the specified range from the original vector

    - #### getElement

          Vector.Element getElement(int idx)

      Gets element at the given index. NOTE: implementation can choose to reuse `Vector.Element` instance so you need to copy it if you want to retain it outside of iteration.
      Parameters:
        `idx` - Element's index.
      Returns:
        Vector's element at the given index.
      Throws:
        `IndexException` - Throw if index is out of bounds.

    - #### assign

          Vector assign(double val)

      Assigns given value to all elements of this vector.
      Parameters:
        `val` - Value to assign.
      Returns:
        This vector.

    - #### assign

          Vector assign(double[] vals)

      Assigns values from given array to this vector.
      Parameters:
        `vals` - Values to assign.
      Returns:
        This vector.
      Throws:
        `CardinalityException` - Thrown if cardinalities mismatch.

    - #### assign

          Vector assign(Vector vec)

      Copies values from the argument vector to this one.
      Parameters:
        `vec` - Argument vector.
      Returns:
        This vector.
      Throws:
        `CardinalityException` - Thrown if cardinality mismatch.

    - #### assign

          Vector assign(IntToDoubleFunction fun)

      Assigns each vector element to the value generated by given function.
      Parameters:
        `fun` - Function that takes the index and returns value.
      Returns:
        This vector.

    - #### map

          Vector map(IgniteDoubleFunction<Double> fun)

      Maps all values in this vector through a given function.
      Parameters:
        `fun` - Mapping function.
      Returns:
        This vector.

    - #### map

          Vector map(Vector vec,
                     IgniteBiFunction<Double,Double,Double> fun)

      Maps all values in this vector through a given function. For this vector `A`, argument vector `B` and the function `F` this method maps every element `x` as: `A(x) = F(A(x), B(x))`
      Parameters:
        `vec` - Argument vector.
        `fun` - Mapping function.
      Returns:
        This function.
      Throws:
        `CardinalityException` - Thrown if cardinality mismatch.

    - #### map

          Vector map(IgniteBiFunction<Double,Double,Double> fun,
                     double y)

      Maps all elements of this vector by applying given function to each element with a constant second parameter `y`.
      Parameters:
        `fun` - Mapping function.
        `y` - Second parameter for mapping function.
      Returns:
        This vector.

    - #### divide

          Vector divide(double x)

      Creates new vector containing values from this vector divided by the argument.
      Parameters:
        `x` - Division argument.
      Returns:
        New vector.

    - #### dot

          double dot(Vector vec)

      Gets dot product of two vectors.
      Parameters:
        `vec` - Argument vector.
      Returns:
        Dot product of two vectors.

    - #### get

          double get(int idx)

      Gets the value at specified index.
      Parameters:
        `idx` - Vector index.
      Returns:
        Vector value.
      Throws:
        `IndexException` - Throw if index is out of bounds.

    - #### getX

          double getX(int idx)

      Gets the value at specified index without checking for index boundaries.
      Parameters:
        `idx` - Vector index.
      Returns:
        Vector value.

    - #### getRaw

          <T extends Serializable> T getRaw(int idx)

      Gets the value at specified index.
      Parameters:
        `idx` - Vector index.
      Returns:
        Vector value.
      Throws:
        `IndexException` - Throw if index is out of bounds.

    - #### getRawX

          <T extends Serializable> T getRawX(int idx)

      Gets the value at specified index without checking for index boundaries.
      Parameters:
        `idx` - Vector index.
      Returns:
        Vector value.

    - #### like

          Vector like(int crd)

      Creates new empty vector of the same underlying class but of different cardinality.
      Parameters:
        `crd` - Cardinality for new vector.
      Returns:
        New vector.

    - #### likeMatrix

          Matrix likeMatrix(int rows,
                            int cols)

      Creates new matrix of compatible flavor with given size.
      Parameters:
        `rows` - Number of rows.
        `cols` - Number of columns.
      Returns:
        New matrix.

    - #### toMatrix

          Matrix toMatrix(boolean rowLike)

      Converts this vector into [N x 1] or [1 x N] matrix where N is this vector cardinality.
      Parameters:
        `rowLike` - `true` for rowLike [N x 1], or `false` for column [1 x N] matrix.
      Returns:
        Newly created matrix.

    - #### toMatrixPlusOne

          Matrix toMatrixPlusOne(boolean rowLike,
                                 double zeroVal)

      Converts this vector into [N+1 x 1] or [1 x N+1] matrix where N is this vector cardinality. (0,0) element of this matrix will be `zeroVal` parameter.
      Parameters:
        `rowLike` - `true` for rowLike [N+1 x 1], or `false` for column [1 x N+1] matrix.
      Returns:
        Newly created matrix.

    - #### minus

          Vector minus(Vector vec)

      Creates new vector containing element by element difference between this vector and the argument one.
      Parameters:
        `vec` - Argument vector.
      Returns:
        New vector.
      Throws:
        `CardinalityException` - Thrown if cardinality mismatch.

    - #### normalize

          Vector normalize()

      Creates new vector containing the normalized (L_2 norm) values of this vector.
      Returns:
        New vector.

    - #### normalize

          Vector normalize(double power)

      Creates new vector containing the normalized (L_power norm) values of this vector. See http://en.wikipedia.org/wiki/Lp_space for details.
      Parameters:
        `power` - The power to use. Must be >= 0. May also be `Double.POSITIVE_INFINITY`.
      Returns:
        New vector `x` such that `norm(x, power) == 1`

    - #### logNormalize

          Vector logNormalize()

      Creates new vector containing the `log(1 + entry) / L_2 norm` values of this vector.
      Returns:
        New vector.

    - #### logNormalize

          Vector logNormalize(double power)

      Creates new vector with a normalized value calculated as `log_power(1 + entry) / L_power norm`.
      Parameters:
        `power` - The power to use. Must be > 1. Cannot be `Double.POSITIVE_INFINITY`.
      Returns:
        New vector

    - #### kNorm

          double kNorm(double power)

      Gets the k-norm of the vector. See http://en.wikipedia.org/wiki/Lp_space for more details.
      Parameters:
        `power` - The power to use.
      See Also:
        `normalize(double)`

    - #### minValue

          double minValue()

      Gets minimal value in this vector.
      Returns:
        Minimal value.

    - #### maxValue

          double maxValue()

      Gets maximum value in this vector.
      Returns:
        Maximum c.

    - #### minElement

          Vector.Element minElement()

      Gets minimal element in this vector.
      Returns:
        Minimal element.

    - #### maxElement

          Vector.Element maxElement()

      Gets maximum element in this vector.
      Returns:
        Maximum element.

    - #### plus

          Vector plus(double x)

      Creates new vector containing sum of each element in this vector and argument.
      Parameters:
        `x` - Argument value.
      Returns:
        New vector.

    - #### plus

          Vector plus(Vector vec)

      Creates new vector containing element by element sum from both vectors.
      Parameters:
        `vec` - Other argument vector to add.
      Returns:
        New vector.
      Throws:
        `CardinalityException` - Thrown if cardinality mismatch.

    - #### set

          Vector set(int idx,
                     double val)

      Sets value.
      Parameters:
        `idx` - Vector index to set value at.
        `val` - Value to set.
      Returns:
        This vector.
      Throws:
        `IndexException` - Throw if index is out of bounds.

    - #### setX

          Vector setX(int idx,
                      double val)

      Sets value without checking for index boundaries.
      Parameters:
        `idx` - Vector index to set value at.
        `val` - Value to set.
      Returns:
        This vector.

    - #### setRaw

          Vector setRaw(int idx,
                        Serializable val)

      Sets value.
      Parameters:
        `idx` - Vector index to set value at.
        `val` - Value to set.
      Returns:
        This vector.
      Throws:
        `IndexException` - Throw if index is out of bounds.

    - #### setRawX

          Vector setRawX(int idx,
                         Serializable val)

      Sets value without checking for index boundaries.
      Parameters:
        `idx` - Vector index to set value at.
        `val` - Value to set.
      Returns:
        This vector.

    - #### incrementX

          Vector incrementX(int idx,
                            double val)

      Increments value at given index without checking for index boundaries.
      Parameters:
        `idx` - Vector index.
        `val` - Increment value.
      Returns:
        This vector.

    - #### increment

          Vector increment(int idx,
                           double val)

      Increments value at given index.
      Parameters:
        `idx` - Vector index.
        `val` - Increment value.
      Returns:
        This vector.
      Throws:
        `IndexException` - Throw if index is out of bounds.

    - #### nonZeroElements

          int nonZeroElements()

      Gets number of non-zero elements in this vector.
      Returns:
        Number of non-zero elements in this vector.

    - #### times

          Vector times(double x)

      Gets a new vector that contains product of each element and the argument.
      Parameters:
        `x` - Multiply argument.
      Returns:
        New vector.

    - #### times

          Vector times(Vector vec)

      Gets a new vector that is an element-wie product of this vector and the argument.
      Parameters:
        `vec` - Vector to multiply by.
      Returns:
        New vector.
      Throws:
        `CardinalityException` - Thrown if cardinality mismatch.

    - #### viewPart

          Vector viewPart(int off,
                          int len)

      Parameters:
        `off` - Offset into parent vector.
        `len` - Length of the view.

    - #### getStorage

          VectorStorage getStorage()

      Gets vector storage model.

    - #### sum

          double sum()

      Gets the sum of all elements in this vector.
      Returns:
        Vector's sum

    - #### cross

          Matrix cross(Vector vec)

      Gets the cross product of this vector and the other vector.
      Parameters:
        `vec` - Second vector.
      Returns:
        New matrix as a cross product of two vectors.

    - #### foldMap

          <T> T foldMap(IgniteBiFunction<T,Double,T> foldFun,
                        IgniteDoubleFunction<Double> mapFun,
                        T zeroVal)

      Folds this vector into a single value.
      Type Parameters:
        `T` - Type of the folded value.
      Parameters:
        `foldFun` - Folding function that takes two parameters: accumulator and the current value.
        `mapFun` - Mapping function that is called on each vector element before its passed to the accumulator (as its second parameter).
        `zeroVal` - Zero value for fold operation.
      Returns:
        Folded value of this vector.

    - #### foldMap

          <T> T foldMap(Vector vec,
                        IgniteBiFunction<T,Double,T> foldFun,
                        IgniteBiFunction<Double,Double,Double> combFun,
                        T zeroVal)

      Combines & maps two vector and folds them into a single value.
      Type Parameters:
        `T` - Type of the folded value.
      Parameters:
        `vec` - Another vector to combine with.
        `foldFun` - Folding function.
        `combFun` - Combine function.
        `zeroVal` - Zero value for fold operation.
      Returns:
        Folded value of these vectors.
      Throws:
        `CardinalityException` - Thrown when cardinality mismatch.

    - #### getLengthSquared

          double getLengthSquared()

      Gets the sum of squares of all elements in this vector.
      Returns:
        Length squared value.

    - #### getDistanceSquared

          double getDistanceSquared(Vector vec)

      Get the square of the distance between this vector and the argument vector.
      Parameters:
        `vec` - Another vector.
      Returns:
        Distance squared.
      Throws:
        `CardinalityException` - Thrown if cardinality mismatch.

    - #### guid

          IgniteUuid guid()

      Auto-generated globally unique vector ID.
      Returns:
        Vector GUID.

    - #### compute

          void compute(int i,
                       IgniteIntDoubleToDoubleBiFunction f)

      Replace vector entry with value oldVal at i with result of computing f(i, oldVal).
      Parameters:
        `i` - Position.
        `f` - Function used for replacing.

    - #### asArray

          default double[] asArray()

      Returns array of doubles corresponds to vector components.
      Returns:
        Array of doubles.

    - #### labeled

          default <L> LabeledVector<L> labeled(L lbl)

      Creates `LabeledVector` instance.
      Type Parameters:
        `L` - Label class.
      Parameters:
        `lbl` - Label value.
      Returns:
        Labeled vector.

${current.year} Copyright © Apache Software Foundation
| Follow @ApacheIgnite
Ignite Database and Caching Platform | : ver. 2.15.0
Release Date | : April 25 2023