/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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); }