Exemplo n.º 1
0
        /// <summary>
        /// Create a new vector with a type that can represent and is closest to both provided samples and the dimensions of example.
        /// </summary>
        public static Vector <T> SameAs <T>(Vector <T> example, Vector <T> otherExample)
            where T : struct, IEquatable <T>, IFormattable
        {
            VectorBuilder <T> v_builder = BuilderInstance <T> .Vector;

            return(v_builder.SameAs(example, otherExample));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Create a new sparse vector as a copy of the given indexed enumerable.
        /// Keys must be provided at most once, zero is assumed if a key is omitted.
        /// This new vector will be independent from the enumerable.
        /// A new memory block will be allocated for storing the vector.
        /// </summary>
        public static Vector <T> SparseOfIndexed <T>(int length, IEnumerable <Tuple <int, T> > enumerable)
            where T : struct, IEquatable <T>, IFormattable
        {
            VectorBuilder <T> v_builder = BuilderInstance <T> .Vector;

            return(v_builder.SparseOfIndexed(length, enumerable));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Create a new sparse vector as a copy of the given array.
        /// This new vector will be independent from the array.
        /// A new memory block will be allocated for storing the vector.
        /// </summary>
        public static Vector <T> SparseOfArray <T>(T[] array)
            where T : struct, IEquatable <T>, IFormattable
        {
            VectorBuilder <T> v_builder = BuilderInstance <T> .Vector;

            return(v_builder.SparseOfArray(array));
        }
Exemplo n.º 4
0
        /// <summary>
        /// Create a new sparse vector as a copy of the given enumerable.
        /// This new vector will be independent from the enumerable.
        /// A new memory block will be allocated for storing the vector.
        /// </summary>
        public static Vector <T> SparseOfEnumerable <T>(IEnumerable <T> enumerable)
            where T : struct, IEquatable <T>, IFormattable
        {
            VectorBuilder <T> v_builder = BuilderInstance <T> .Vector;

            return(v_builder.SparseOfEnumerable(enumerable));
        }
Exemplo n.º 5
0
        /// <summary>
        /// Create a new sparse vector as a copy of the given other vector.
        /// This new vector will be independent from the other vector.
        /// A new memory block will be allocated for storing the vector.
        /// </summary>
        public static Vector <T> SparseOfVector <T>(Vector <T> vector)
            where T : struct, IEquatable <T>, IFormattable
        {
            VectorBuilder <T> v_builder = BuilderInstance <T> .Vector;

            return(v_builder.SparseOfVector(vector));
        }
Exemplo n.º 6
0
        /// <summary>
        /// Create a new sparse vector and initialize each value using the provided init function.
        /// </summary>
        public static Vector <T> Sparse <T>(int length, Func <int, T> init)
            where T : struct, IEquatable <T>, IFormattable
        {
            VectorBuilder <T> v_builder = BuilderInstance <T> .Vector;

            return(v_builder.Sparse(length, init));
        }
Exemplo n.º 7
0
        /// <summary>
        /// Create a new sparse vector straight from an initialized vector storage instance.
        /// The storage is used directly without copying.
        /// Intended for advanced scenarios where you're working directly with
        /// storage for performance or interop reasons.
        /// </summary>


        /// <summary>
        /// Create a sparse vector of T with the given size.
        /// </summary>
        /// <param name="size">The size of the vector.</param>
        public static Vector <T> Sparse <T>(int size)
            where T : struct, IEquatable <T>, IFormattable
        {
            VectorBuilder <T> v_builder = BuilderInstance <T> .Vector;

            return(v_builder.Sparse(size));
        }
Exemplo n.º 8
0
        /// <summary>
        /// Create a new dense vector and initialize each value using the provided value.
        /// </summary>
        public static Vector <T> Dense <T>(int length, T value)
            where T : struct, IEquatable <T>, IFormattable
        {
            VectorBuilder <T> v_builder = BuilderInstance <T> .Vector;

            return(v_builder.Dense(length, value));
        }
Exemplo n.º 9
0
        /// <summary>
        /// Create a new vector with a type that can represent and is closest to both provided samples.
        /// </summary>
        public static Vector <T> SameAs <T>(Matrix <T> matrix, Vector <T> vector, int length)
            where T : struct, IEquatable <T>, IFormattable
        {
            VectorBuilder <T> v_builder = BuilderInstance <T> .Vector;

            return(v_builder.SameAs(matrix, vector, length));
        }
Exemplo n.º 10
0
        /// <summary>
        /// Create a new vector with the same kind of the provided example.
        /// </summary>
        public static Vector <T> SameAs <T, TU>(Matrix <TU> example, int length)
            where T : struct, IEquatable <T>, IFormattable
            where TU : struct, IEquatable <TU>, IFormattable
        {
            VectorBuilder <T> v_builder = BuilderInstance <T> .Vector;

            return(v_builder.SameAs(example, length));
        }
Exemplo n.º 11
0
        /// <summary>
        /// Applies a function to each value of this vector and returns the results as a new vector.
        /// The index of each value (zero-based) is passed as first argument to the function.
        /// If forceMapZero is not set to true, zero values may or may not be skipped depending
        /// on the actual data storage implementation (relevant mostly for sparse vectors).
        /// </summary>
        public Vector <TU> MapIndexed <TU>(Func <int, T, TU> f, Zeros zeros = Zeros.AllowSkip)
            where TU : struct, IEquatable <TU>, IFormattable
        {
            VectorBuilder <TU> v_builder = BuilderInstance <TU> .Vector;
            var result = v_builder.SameAs(this);

            Storage.MapIndexedToUnchecked(result.Storage, f, zeros, ExistingData.AssumeZeros);
            return(result);
        }