Class Vector
Base class for vectors. DenseVector, SparseVector, and ApproximateSparseVector all inherit from this base class.
Implements
Inherited Members
Namespace: Microsoft.ML.Probabilistic.Math
Assembly: Microsoft.ML.Probabilistic.dll
Syntax
[Serializable]
[DataContract]
public abstract class Vector : IList<double>, ICollection<double>, IReadOnlyList<double>, IReadOnlyCollection<double>, IEnumerable<double>, IEnumerable, SettableTo<Vector>, ICloneable, CanSetAllElementsTo<double>, SettableToPower<Vector>, SettableToProduct<Vector>, SettableToProduct<Vector, Vector>, SettableToWeightedSum<Vector>
Remarks
This class includes factory methods for instantiating Vectors of different Sparsity specifications. Beyond this initial construction, application code does not need to know the the sparsity, and most operations can be done via this general base class which will handle sparsity correctly.
Properties
Count
Number of elements in vector
Declaration
public virtual int Count { get; protected set; }
Property Value
Type | Description |
---|---|
Int32 |
IsApproximate
True if this vector is approximate (sparse only)
Declaration
public bool IsApproximate { get; }
Property Value
Type | Description |
---|---|
Boolean |
IsDense
True if this vector is dense
Declaration
public bool IsDense { get; }
Property Value
Type | Description |
---|---|
Boolean |
IsExact
True if this vector is exact (dense or sparse)
Declaration
public bool IsExact { get; }
Property Value
Type | Description |
---|---|
Boolean |
IsReadOnly
Is read only
Declaration
public virtual bool IsReadOnly { get; }
Property Value
Type | Description |
---|---|
Boolean |
IsSparse
True if is this vector is sparse (exact or approximate)
Declaration
public bool IsSparse { get; }
Property Value
Type | Description |
---|---|
Boolean |
Item[Int32]
Gets and sets an element.
Declaration
public virtual double this[int index] { get; set; }
Parameters
Type | Name | Description |
---|---|---|
Int32 | index |
Property Value
Type | Description |
---|---|
Double |
Sparsity
The Sparsity specification of this vector.
Declaration
public Sparsity Sparsity { get; protected set; }
Property Value
Type | Description |
---|---|
Sparsity |
Methods
All(Converter<Double, Boolean>)
Tests if all elements in the vector satisfy the specified condition.
Declaration
public abstract bool All(Converter<double, bool> fun)
Parameters
Type | Name | Description |
---|---|---|
Converter<Double, Boolean> | fun |
Returns
Type | Description |
---|---|
Boolean |
Any(Vector, Func<Double, Double, Boolean>)
Test if any corresponding elements in this and that vector satisfy a condition
Declaration
public virtual bool Any(Vector that, Func<double, double, bool> fun)
Parameters
Type | Name | Description |
---|---|---|
Vector | that | |
Func<Double, Double, Boolean> | fun |
Returns
Type | Description |
---|---|
Boolean |
Any(Converter<Double, Boolean>)
Tests if any elements in the vector satisfy the specified condition.
Declaration
public abstract bool Any(Converter<double, bool> fun)
Parameters
Type | Name | Description |
---|---|---|
Converter<Double, Boolean> | fun |
Returns
Type | Description |
---|---|
Boolean |
Append(Vector)
Return a new vector which is the concatenation of this vector and a second vector.
Declaration
public virtual Vector Append(Vector second)
Parameters
Type | Name | Description |
---|---|---|
Vector | second | Second vector |
Returns
Type | Description |
---|---|
Vector |
Append(Double)
Appends an item to a vector - returns a new vector
Declaration
public virtual Vector Append(double item)
Parameters
Type | Name | Description |
---|---|---|
Double | item |
Returns
Type | Description |
---|---|
Vector |
CheckCompatible(Vector, String)
Checks that a given vector is the same size as this vector. Throws an exception if not with the given string
Declaration
protected virtual void CheckCompatible(Vector that, string paramName)
Parameters
Type | Name | Description |
---|---|---|
Vector | that | The vector to check |
String | paramName |
Clone()
Clones this vector - return as a vector
Declaration
public virtual Vector Clone()
Returns
Type | Description |
---|---|
Vector |
Concat(Vector, Vector)
Create a vector by concatenating two vectors.
Declaration
public static Vector Concat(Vector first, Vector second)
Parameters
Type | Name | Description |
---|---|---|
Vector | first | First vector |
Vector | second | Second vector |
Returns
Type | Description |
---|---|
Vector | A new vector with all elements of the first vector followed by all elements of the second vector. |
Constant(Int32, Double)
Create a dense vector of given length with elements all equal to a specified value
Declaration
public static Vector Constant(int count, double value)
Parameters
Type | Name | Description |
---|---|---|
Int32 | count | Number of elements in vector |
Double | value | value for each element |
Returns
Type | Description |
---|---|
Vector |
Constant(Int32, Double, Sparsity)
Create a vector of given length with elements all equal to a specified value
Declaration
public static Vector Constant(int count, double value, Sparsity sparsity)
Parameters
Type | Name | Description |
---|---|---|
Int32 | count | Number of elements in vector |
Double | value | value for each element |
Sparsity | sparsity | The Sparsity specification. |
Returns
Type | Description |
---|---|
Vector |
Contains(Double)
Returns true if the Vector contains the specified item value
Declaration
public virtual bool Contains(double item)
Parameters
Type | Name | Description |
---|---|---|
Double | item |
Returns
Type | Description |
---|---|
Boolean |
Copy(Vector)
Create a vector as a copy of another vector.
Declaration
public static Vector Copy(Vector that)
Parameters
Type | Name | Description |
---|---|---|
Vector | that | The source vector - can be dense or sparse |
Returns
Type | Description |
---|---|
Vector |
Remarks
Sparsity of created vector matches that of source vector
Copy(Vector, Sparsity)
Create a vector as a copy of another vector with a given target sparsity
Declaration
public static Vector Copy(Vector that, Sparsity sparsity)
Parameters
Type | Name | Description |
---|---|---|
Vector | that | The source vector - can be dense or sparse |
Sparsity | sparsity | The Sparsity specification. |
Returns
Type | Description |
---|---|
Vector |
CopyTo(Double[], Int32)
Copies this vector to the given array starting at the specified index in the target array
Declaration
public virtual void CopyTo(double[] array, int index)
Parameters
Type | Name | Description |
---|---|---|
Double[] | array | The target array |
Int32 | index | The start index in the target array |
CountAll(Converter<Double, Boolean>)
Returns the number of elements in the vector which satisfy a given condition.
Declaration
public abstract int CountAll(Converter<double, bool> fun)
Parameters
Type | Name | Description |
---|---|---|
Converter<Double, Boolean> | fun | The condition for the elements to satisfy. |
Returns
Type | Description |
---|---|
Int32 | The number of elements in the vector which satisfy the condition. |
EnsureDense(Vector)
Declaration
protected DenseVector EnsureDense(Vector vector)
Parameters
Type | Name | Description |
---|---|---|
Vector | vector |
Returns
Type | Description |
---|---|
DenseVector |
Equals(Object)
Determines object equality.
Declaration
public override bool Equals(object obj)
Parameters
Type | Name | Description |
---|---|---|
Object | obj | Another (DenseVector) object. |
Returns
Type | Description |
---|---|
Boolean | True if equal. |
Overrides
EqualsAll(Double)
Tests if all elements are equal to a given value.
Declaration
public virtual bool EqualsAll(double value)
Parameters
Type | Name | Description |
---|---|---|
Double | value | The value to test against. |
Returns
Type | Description |
---|---|
Boolean | True if all elements are equal to |
FindAll(Converter<Double, Boolean>)
Returns an enumeration over the indices and values of all elements which satisfy the specified condition. Indices are returned in sorted order.
Declaration
public abstract IEnumerable<ValueAtIndex<double>> FindAll(Converter<double, bool> fun)
Parameters
Type | Name | Description |
---|---|---|
Converter<Double, Boolean> | fun | A function to check if the condition is satisfied. |
Returns
Type | Description |
---|---|
IEnumerable<ValueAtIndex<Double>> | An enumeration over the indices and values of all elements which satisfy the specified condition. |
FindFirstIndex(Converter<Double, Boolean>)
Returns the index of the first element that satisfies satisfy a given condition.
Declaration
public abstract int FindFirstIndex(Converter<double, bool> fun)
Parameters
Type | Name | Description |
---|---|---|
Converter<Double, Boolean> | fun | The condition for the element to satisfy. |
Returns
Type | Description |
---|---|
Int32 | The zero-based index of the first occurrence of an element that matches the conditions defined by match, if found; otherwise, �1. |
FindLastIndex(Converter<Double, Boolean>)
Returns the index of the last element that satisfiessatisfy a given condition.
Declaration
public abstract int FindLastIndex(Converter<double, bool> fun)
Parameters
Type | Name | Description |
---|---|---|
Converter<Double, Boolean> | fun | The condition for the element to satisfy. |
Returns
Type | Description |
---|---|
Int32 | The zero-based index of the last occurrence of an element that matches the conditions defined by match, if found; otherwise, �1. |
FromArray(Double[])
Constructs a dense vector from an array.
Declaration
public static Vector FromArray(params double[] data)
Parameters
Type | Name | Description |
---|---|---|
Double[] | data | 1D array of elements. |
Returns
Type | Description |
---|---|
Vector |
Remarks
The array data is copied into new storage. The size of the vector is taken from the array.
FromArray(Double[], Sparsity)
Constructs a vector from an array.
Declaration
public static Vector FromArray(double[] data, Sparsity sparsity)
Parameters
Type | Name | Description |
---|---|---|
Double[] | data | 1D array of elements. |
Sparsity | sparsity | The Sparsity specification. |
Returns
Type | Description |
---|---|
Vector |
Remarks
The array data is copied into new storage. The size of the vector is taken from the array.
FromArray(Int32, Double[], Int32)
Constructs a vector from part of an array.
Declaration
public static Vector FromArray(int count, double[] data, int start)
Parameters
Type | Name | Description |
---|---|---|
Int32 | count | The number of elements in the vector. |
Double[] | data | Storage for the vector elements. |
Int32 | start | The starting index in the array for the vector elements. |
Returns
Type | Description |
---|---|
Vector |
Remarks
Throws an exception if Data is null, start < 0, or count < 0.
FromArray(Int32, Double[], Int32, Sparsity)
Constructs a vector from part of an array.
Declaration
public static Vector FromArray(int count, double[] data, int start, Sparsity sparsity)
Parameters
Type | Name | Description |
---|---|---|
Int32 | count | The number of elements in the vector. |
Double[] | data | Storage for the vector elements. |
Int32 | start | The starting index in the array for the vector elements. |
Sparsity | sparsity | The Sparsity specification. |
Returns
Type | Description |
---|---|
Vector |
Remarks
Throws an exception if Data is null, start < 0, or count < 0.
FromList(IList<Double>)
Constructs a vector from a list. Maintains sparsity.
Declaration
public static Vector FromList(IList<double> list)
Parameters
Type | Name | Description |
---|---|---|
IList<Double> | list | List to create vector from. |
Returns
Type | Description |
---|---|
Vector |
GetEnumerator()
Gets a typed enumerator which yields the vector elements
Declaration
public virtual IEnumerator<double> GetEnumerator()
Returns
Type | Description |
---|---|
IEnumerator<Double> |
GetHashCode()
Gets a hash code for the instance.
Declaration
public override int GetHashCode()
Returns
Type | Description |
---|---|
Int32 | The code. |
Overrides
GreaterThan(Vector)
Tests if this vector is strictly greater than a second vector.
Declaration
public virtual bool GreaterThan(Vector that)
Parameters
Type | Name | Description |
---|---|---|
Vector | that | The value to test against. |
Returns
Type | Description |
---|---|
Boolean | True if each element is strictly greater than the corresponding element of |
GreaterThan(Double)
Tests if all elements are strictly greater than a given value.
Declaration
public virtual bool GreaterThan(double value)
Parameters
Type | Name | Description |
---|---|---|
Double | value | The value to test against. |
Returns
Type | Description |
---|---|
Boolean | True if all elements are strictly greater than |
GreaterThanOrEqual(Vector)
Tests if this vector is than or equal to a second vector.
Declaration
public virtual bool GreaterThanOrEqual(Vector that)
Parameters
Type | Name | Description |
---|---|---|
Vector | that | The value to test against. |
Returns
Type | Description |
---|---|
Boolean | True if each element is greater than or equal to the corresponding element of |
GreaterThanOrEqual(Double)
Tests if all elements are greater than or equal to a given value.
Declaration
public virtual bool GreaterThanOrEqual(double value)
Parameters
Type | Name | Description |
---|---|---|
Double | value | The value to test against. |
Returns
Type | Description |
---|---|
Boolean | True if all elements are greater than or equal to |
IndexAtCumulativeSum(Double)
Returns the index of the first element at which the sum of all elements so far is greater than a particular value. Useful for finding the median of a Discrete distribution.
Declaration
public virtual int IndexAtCumulativeSum(double targetSum)
Parameters
Type | Name | Description |
---|---|---|
Double | targetSum | The sum of interest |
Returns
Type | Description |
---|---|
Int32 | The index of the element where |
IndexOf(Double)
Returns the index of the first occurence of the given value in the array. Returns -1 if the value is not in the array
Declaration
public virtual int IndexOf(double item)
Parameters
Type | Name | Description |
---|---|---|
Double | item | The item to check for |
Returns
Type | Description |
---|---|
Int32 | Its index in the array |
IndexOfAll(Converter<Double, Boolean>)
Returns an enumeration over the indices of all elements which satisfy the specified condition. Indices are returned in sorted order.
Declaration
public IEnumerable<int> IndexOfAll(Converter<double, bool> fun)
Parameters
Type | Name | Description |
---|---|---|
Converter<Double, Boolean> | fun | A function to check if the condition is satisfied. |
Returns
Type | Description |
---|---|
IEnumerable<Int32> | An enumeration over the indices of all elements which satisfy the specified condition. |
IndexOfMaximum()
Returns the index of the maximum element.
Declaration
public virtual int IndexOfMaximum()
Returns
Type | Description |
---|---|
Int32 | The index of the maximum element. |
IndexOfMinimum()
Returns the index of the minimum element.
Declaration
public virtual int IndexOfMinimum()
Returns
Type | Description |
---|---|
Int32 | The index of the minimum element. |
Inner(Vector)
Returns the inner product of this vector with another vector.
Declaration
public virtual double Inner(Vector that)
Parameters
Type | Name | Description |
---|---|---|
Vector | that | Second vector, which must have the same size as |
Returns
Type | Description |
---|---|
Double | Their inner product. |
Inner(Vector, Converter<Double, Double>)
Returns the inner product of a function of this vector with a second vector.
Declaration
public virtual double Inner(Vector that, Converter<double, double> fun)
Parameters
Type | Name | Description |
---|---|---|
Vector | that | Second vector, which must have the same size as |
Converter<Double, Double> | fun | Function to convert the elements of the second vector |
Returns
Type | Description |
---|---|
Double | Their inner product. |
Inner(Converter<Double, Double>, Vector, Converter<Double, Double>)
Returns the inner product of a function of this vector with a function of a second vector.
Declaration
public virtual double Inner(Converter<double, double> thisFun, Vector that, Converter<double, double> thatFun)
Parameters
Type | Name | Description |
---|---|---|
Converter<Double, Double> | thisFun | Function to convert the elements of this vector |
Vector | that | Second vector, which must have the same size as |
Converter<Double, Double> | thatFun | Function to convert the elements of that vector |
Returns
Type | Description |
---|---|
Double | Their inner product. |
InnerProduct(Vector, Vector)
Returns the inner product of two vectors.
Declaration
public static double InnerProduct(Vector a, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | |
Vector | b |
Returns
Type | Description |
---|---|
Double | The inner product. |
LessThan(Vector)
Tests if this vector is strictly less than a second vector.
Declaration
public virtual bool LessThan(Vector that)
Parameters
Type | Name | Description |
---|---|---|
Vector | that | The value to test against. |
Returns
Type | Description |
---|---|
Boolean | True if each element is strictly less than the corresponding element of |
LessThan(Double)
Tests if all elements are strictly less than a given value.
Declaration
public virtual bool LessThan(double value)
Parameters
Type | Name | Description |
---|---|---|
Double | value | The value to test against. |
Returns
Type | Description |
---|---|
Boolean | True if all elements are strictly less than |
LessThanOrEqual(Vector)
Tests if this vector is less than or equal to a second vector.
Declaration
public virtual bool LessThanOrEqual(Vector that)
Parameters
Type | Name | Description |
---|---|---|
Vector | that | The value to test against. |
Returns
Type | Description |
---|---|
Boolean | True if each element is strictly less than or equal to the corresponding element of |
LessThanOrEqual(Double)
Tests if all elements are less than or equal to a given value.
Declaration
public virtual bool LessThanOrEqual(double value)
Parameters
Type | Name | Description |
---|---|---|
Double | value | The value to test against. |
Returns
Type | Description |
---|---|
Boolean | True if all elements are less than or equal to |
LogSumExp()
Returns the log of the sum of exponentials of the elements of the vector computed to high accuracy
Declaration
public virtual double LogSumExp()
Returns
Type | Description |
---|---|
Double |
Max()
Returns the maximum of the elements in the vector
Declaration
public virtual double Max()
Returns
Type | Description |
---|---|
Double |
Max(Converter<Double, Double>)
Returns the maximum of a function of the elements in the vector
Declaration
public virtual double Max(Converter<double, double> fun)
Parameters
Type | Name | Description |
---|---|---|
Converter<Double, Double> | fun |
Returns
Type | Description |
---|---|
Double |
MaxDiff(Vector)
Returns the maximum absolute difference between this vector and another vector.
Declaration
public virtual double MaxDiff(Vector that)
Parameters
Type | Name | Description |
---|---|---|
Vector | that | The second vector. |
Returns
Type | Description |
---|---|
Double |
|
Remarks
This routine is typically used instead of Equals
, since Equals
is susceptible to roundoff errors.
MaxDiff(Vector, Double)
Returns the maximum relative difference between this vector and another.
Declaration
public virtual double MaxDiff(Vector that, double rel)
Parameters
Type | Name | Description |
---|---|---|
Vector | that | The second vector. |
Double | rel | An offset to avoid division by zero. |
Returns
Type | Description |
---|---|
Double |
|
Remarks
This routine is typically used instead of Equals
, since Equals
is susceptible to roundoff errors.
Median()
Returns the minimum of the elements in the vector
Declaration
public virtual double Median()
Returns
Type | Description |
---|---|
Double |
Min()
Returns the minimum of the elements in the vector
Declaration
public virtual double Min()
Returns
Type | Description |
---|---|
Double |
Min(Converter<Double, Double>)
Returns the minimum of a function of the elements in the vector
Declaration
public virtual double Min(Converter<double, double> fun)
Parameters
Type | Name | Description |
---|---|---|
Converter<Double, Double> | fun |
Returns
Type | Description |
---|---|
Double |
Outer(Vector)
Returns the outer product of this vector with another vector.
Declaration
public virtual Matrix Outer(Vector that)
Parameters
Type | Name | Description |
---|---|---|
Vector | that | Second vector. |
Returns
Type | Description |
---|---|
Matrix | Their outer product. |
PredivideBy(LowerTriangularMatrix)
Gets the solution to Ax=b, where A is a lower triangular matrix, and b is this vector. Equivalent to the left-division x = A\b.
Declaration
public virtual Vector PredivideBy(LowerTriangularMatrix A)
Parameters
Type | Name | Description |
---|---|---|
LowerTriangularMatrix | A | A lower triangular matrix. |
Returns
Type | Description |
---|---|
Vector |
|
Remarks
this
is used as the right-hand side vector b, and it also
receives the solution.
Throws an exception if A
is singular.
PredivideBy(PositiveDefiniteMatrix)
Premultiply this vector by the inverse of a positive definite matrix
Declaration
public virtual Vector PredivideBy(PositiveDefiniteMatrix A)
Parameters
Type | Name | Description |
---|---|---|
PositiveDefiniteMatrix | A |
Returns
Type | Description |
---|---|
Vector |
PredivideBy(UpperTriangularMatrix)
Gets the solution to Ax=b, where A is an upper triangular matrix, and b is this vector. Equivalent to the left-division x = A\b.
Declaration
public virtual Vector PredivideBy(UpperTriangularMatrix A)
Parameters
Type | Name | Description |
---|---|---|
UpperTriangularMatrix | A | An upper triangular matrix. |
Returns
Type | Description |
---|---|
Vector |
|
Remarks
this
is used as the right-hand side vector b, and it also
receives the solution.
Throws an exception if A
is singular.
PredivideByTranspose(LowerTriangularMatrix)
Gets the solution to A'x=b, where A is a lower triangular matrix, and b is this vector. Equivalent to the left-division x = A'\b.
Declaration
public virtual Vector PredivideByTranspose(LowerTriangularMatrix A)
Parameters
Type | Name | Description |
---|---|---|
LowerTriangularMatrix | A | A lower triangular matrix. |
Returns
Type | Description |
---|---|
Vector |
|
Remarks
this
is used as the right-hand side vector b, and it also
receives the solution.
Throws an exception if A
is singular.
Reduce(Double, Vector, Vector, Func<Double, Double, Double, Double, Double>)
Reduce method. Operates on this vector and two other vectors
Declaration
public virtual double Reduce(double initial, Vector a, Vector b, Func<double, double, double, double, double> fun)
Parameters
Type | Name | Description |
---|---|---|
Double | initial | Initial value |
Vector | a | A second vector |
Vector | b | A third vector |
Func<Double, Double, Double, Double, Double> | fun |
Returns
Type | Description |
---|---|
Double |
Reduce(Double, Vector, Func<Double, Double, Double, Double>)
Reduce method. Operates on this vector and that vector
Declaration
public virtual double Reduce(double initial, Vector that, Func<double, double, double, double> fun)
Parameters
Type | Name | Description |
---|---|---|
Double | initial | Initial value |
Vector | that | A second vector |
Func<Double, Double, Double, Double> | fun | Reduction function taking partial result, current element, and current element of |
Returns
Type | Description |
---|---|
Double |
Reduce(Double, Func<Double, Double, Double>)
Reduce method. Operates on this vector
Declaration
public virtual double Reduce(double initial, Func<double, double, double> fun)
Parameters
Type | Name | Description |
---|---|---|
Double | initial | Initial value |
Func<Double, Double, Double> | fun | Reduction function taking partial result and current element |
Returns
Type | Description |
---|---|
Double |
Scale(Double)
Multiplies this vector by a scalar.
Declaration
public virtual void Scale(double scale)
Parameters
Type | Name | Description |
---|---|---|
Double | scale | The scalar. |
Remarks
this receives the product. This method is a synonym for SetToProduct(this, scale)
SetAllElementsTo(Double)
Sets all elements to a given value.
Declaration
public virtual void SetAllElementsTo(double value)
Parameters
Type | Name | Description |
---|---|---|
Double | value | The new value. |
SetSubvector(Int32, Vector)
Set a subvector of this to another vector.
Declaration
public virtual void SetSubvector(int startIndex, Vector that)
Parameters
Type | Name | Description |
---|---|---|
Int32 | startIndex | The index of the first element of this to copy to. |
Vector | that | A vector whose length is at most |
SetTo(Vector)
Copies values from a Vector to this vector
Declaration
public virtual void SetTo(Vector that)
Parameters
Type | Name | Description |
---|---|---|
Vector | that |
SetTo(IEnumerable<Double>)
Copies values from an Enumerable to this vector
Declaration
public virtual void SetTo(IEnumerable<double> that)
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<Double> | that |
SetTo(Double[])
Copies values from an array.
Declaration
public virtual void SetTo(double[] values)
Parameters
Type | Name | Description |
---|---|---|
Double[] | values | An array whose length matches |
SetToDiagonal(Matrix)
Sets this vector to the diagonal of a matrix.
Declaration
public virtual void SetToDiagonal(Matrix m)
Parameters
Type | Name | Description |
---|---|---|
Matrix | m | A matrix with Rows==Cols==this.Count. |
SetToDifference(Vector, Vector)
Sets this vector to the difference of two vectors
Declaration
public virtual Vector SetToDifference(Vector a, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | First vector, which must have the same size as |
Vector | b | Second vector, which must have the same size as |
Returns
Type | Description |
---|---|
Vector |
|
Remarks
this
receives the difference, and must already be the correct size.
a
and/or b
may be the same object as this
.
If this
and a
/b
occupy distinct yet overlapping portions of the same source array, the results are undefined.
SetToDifference(Vector, Double)
Set this vector to another vector minus a constant
Declaration
public virtual Vector SetToDifference(Vector a, double b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | The other vector |
Double | b | The constant |
Returns
Type | Description |
---|---|
Vector |
Remarks
Assumes the vectors are compatible
SetToDifference(Double, Vector)
Set this vector to a constant minus another vector
Declaration
public virtual Vector SetToDifference(double a, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Double | a | The constant |
Vector | b | The other vector |
Returns
Type | Description |
---|---|
Vector |
Remarks
Assumes the vectors are compatible
SetToFunction(Vector, Vector, Func<Double, Double, Double>)
Sets the elements of this vector to a function of the elements of two vectors
Declaration
public virtual Vector SetToFunction(Vector a, Vector b, Func<double, double, double> fun)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | The first vector |
Vector | b | The second vector |
Func<Double, Double, Double> | fun | The function which maps two doubles to a double |
Returns
Type | Description |
---|---|
Vector |
Remarks
Assumes the vectors are compatible
SetToFunction(Vector, Converter<Double, Double>)
Sets the elements of this vector to a function of the elements of a given vector
Declaration
public virtual Vector SetToFunction(Vector that, Converter<double, double> fun)
Parameters
Type | Name | Description |
---|---|---|
Vector | that | The given vector |
Converter<Double, Double> | fun | The function which maps doubles to doubles |
Returns
Type | Description |
---|---|
Vector |
Remarks
Assumes the vectors are compatible
SetToPower(Vector, Double)
Sets this vector to the elementwise power of another vector.
Declaration
public virtual void SetToPower(Vector that, double exponent)
Parameters
Type | Name | Description |
---|---|---|
Vector | that | A vector, which must have the same size as |
Double | exponent | A scalar. |
Remarks
this
receives the product, and must already be the correct size.
If this
and that
occupy distinct yet overlapping portions of the same source array, the results are undefined.
SetToProduct(Matrix, Vector)
Set this vector to the product of a matrix by a vector (i.e. A*x).
Declaration
public virtual Vector SetToProduct(Matrix A, Vector x)
Parameters
Type | Name | Description |
---|---|---|
Matrix | A | A matrix. |
Vector | x | A vector. Cannot be |
Returns
Type | Description |
---|---|
Vector |
|
Remarks
this
receives the product, and must already be the correct size.
If this
and A
/x
occupy overlapping portions of the same source array, the results are undefined.
SetToProduct(Vector, Matrix)
Sets this vector to the product of a vector by a matrix (i.e. x*A).
Declaration
public virtual Vector SetToProduct(Vector x, Matrix A)
Parameters
Type | Name | Description |
---|---|---|
Vector | x | A vector. Cannot be |
Matrix | A | A matrix. |
Returns
Type | Description |
---|---|
Vector |
|
Remarks
this
receives the product, and must already be the correct size.
If this
and A
/x
occupy overlapping portions of the same source array, the results are undefined.
SetToProduct(Vector, Vector)
Sets this vector to the elementwise product of two other vectors.
Declaration
public virtual void SetToProduct(Vector a, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | Must have the same size as |
Vector | b | Must have the same size as |
Remarks
this
receives the product, and must already be the correct size.
If this
and a
occupy distinct yet overlapping portions of the same source array, the results are undefined.
SetToProduct(Vector, Double)
Sets this vector to a vector times a scalar.
Declaration
public virtual Vector SetToProduct(Vector a, double b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | A vector, which must have the same size as |
Double | b | A scalar. |
Returns
Type | Description |
---|---|
Vector |
|
Remarks
this
receives the product, and must already be the correct size.
If this
and a
occupy distinct yet overlapping portions of the same source array, the results are undefined.
SetToRatio(Vector, Vector)
Sets this vector to the elementwise ratio of two other vectors.
Declaration
public virtual Vector SetToRatio(Vector a, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | Must have the same size as |
Vector | b | Must have the same size as |
Returns
Type | Description |
---|---|
Vector |
|
Remarks
this
receives the product, and must already be the correct size.
If this
and a
occupy distinct yet overlapping portions of the same source array, the results are undefined.
SetToSubarray(Double[], Int32)
Copies values from an array.
Declaration
public virtual void SetToSubarray(double[] values, int startIndex)
Parameters
Type | Name | Description |
---|---|---|
Double[] | values | An array whose length is at least |
Int32 | startIndex | The index of the first value in |
SetToSubvector(Vector, Int32)
Copies value from a vector.
Declaration
public virtual void SetToSubvector(Vector that, int startIndex)
Parameters
Type | Name | Description |
---|---|---|
Vector | that | A vector whose length is at least |
Int32 | startIndex | The index of the first value in |
SetToSum(Vector, Vector)
Sets this vector to the elementwise sum of two other vectors.
Declaration
public virtual Vector SetToSum(Vector a, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | First vector, which must have the same size as |
Vector | b | Second vector, which must have the same size as |
Returns
Type | Description |
---|---|
Vector |
|
Remarks
this
receives the sum, and must already be the correct size.
a
and/or b
may be the same object as this
.
If this
and a
/b
occupy distinct yet overlapping portions of the same source array, the results are undefined.
SetToSum(Vector, Double)
Sets this vector to another vector plus a scalar.
Declaration
public virtual Vector SetToSum(Vector a, double b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | A vector, which must have the same size as |
Double | b | A scalar. |
Returns
Type | Description |
---|---|
Vector |
|
Remarks
this
receives the sum, and must already be the correct size.
If this
and a
occupy distinct yet overlapping portions of the same source array, the results are undefined.
SetToSum(Double, Vector, Double, Vector)
Set this vector to a linear combination of two other vectors
Declaration
public virtual void SetToSum(double aScale, Vector a, double bScale, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Double | aScale | The multiplier for vector a |
Vector | a | First vector, which must have the same size as |
Double | bScale | The multiplier for vector b |
Vector | b | Second vector, which must have the same size as |
Remarks
this
receives the sum, and must already be the correct size.
a
and/or b
may be the same object as this
.
If this
and a
/b
occupy distinct yet overlapping portions of the same source array, the results are undefined.
Subvector(Vector, Int32, Int32)
Copy a subvector.
Declaration
public static Vector Subvector(Vector source, int startIndex, int count)
Parameters
Type | Name | Description |
---|---|---|
Vector | source | A vector whose length is at least |
Int32 | startIndex | The index of the first value in |
Int32 | count | The number of elements to copy. |
Returns
Type | Description |
---|---|
Vector | A Vector of length |
Subvector(Int32, Int32)
Create a subvector of this vector
Declaration
public virtual Vector Subvector(int startIndex, int count)
Parameters
Type | Name | Description |
---|---|---|
Int32 | startIndex | |
Int32 | count |
Returns
Type | Description |
---|---|
Vector |
Sum()
Returns the sum of all elements.
Declaration
public virtual double Sum()
Returns
Type | Description |
---|---|
Double |
Sum(Converter<Double, Double>)
Returns the sum of a function of all elements.
Declaration
public virtual double Sum(Converter<double, double> fun)
Parameters
Type | Name | Description |
---|---|---|
Converter<Double, Double> | fun |
Returns
Type | Description |
---|---|
Double |
Sum(Converter<Double, Double>, Vector, Converter<Double, Boolean>)
Returns the sum of a function of this vector filtered by a function of a second vector.
Declaration
public virtual double Sum(Converter<double, double> fun, Vector that, Converter<double, bool> cond)
Parameters
Type | Name | Description |
---|---|---|
Converter<Double, Double> | fun | Function to convert the elements of this vector |
Vector | that | Second vector, which must have the same size as |
Converter<Double, Boolean> | cond | Function to convert the elements of that vector to give the filter condition |
Returns
Type | Description |
---|---|
Double | The filtered and mapped sum |
SumI()
Returns the sum of over zero-based index * element.
Declaration
public virtual double SumI()
Returns
Type | Description |
---|---|
Double |
SumISq()
Returns the sum of over square of index^2 times element.
Declaration
public virtual double SumISq()
Returns
Type | Description |
---|---|
Double |
ToArray()
Converts this vector to an array of doubles
Declaration
public virtual double[] ToArray()
Returns
Type | Description |
---|---|
Double[] |
ToString()
Converts this sparse vector into a human readable string
Declaration
public override string ToString()
Returns
Type | Description |
---|---|
String |
Overrides
ToString(String)
String representation of vector with a specified format for each element
Declaration
public virtual string ToString(string format)
Parameters
Type | Name | Description |
---|---|---|
String | format |
Returns
Type | Description |
---|---|
String |
ToString(String, String)
String representation of vector with a specified format and delimiter
Declaration
public virtual string ToString(string format, string delimiter)
Parameters
Type | Name | Description |
---|---|---|
String | format | |
String | delimiter |
Returns
Type | Description |
---|---|
String |
ToString(String, String, Func<Int32, String>)
String representation of vector with a specified format and delimiter and a function for converting integers to display strings.
Declaration
public virtual string ToString(string format, string delimiter, Func<int, string> intToString)
Parameters
Type | Name | Description |
---|---|---|
String | format | |
String | delimiter | |
Func<Int32, String> | intToString |
Returns
Type | Description |
---|---|
String |
Zero(Int32)
Creates a dense vector of given length with elements all 0.0
Declaration
public static Vector Zero(int count)
Parameters
Type | Name | Description |
---|---|---|
Int32 | count | Number of elements in vector |
Returns
Type | Description |
---|---|
Vector |
Zero(Int32, Sparsity)
Creates a vector of given length with elements all 0.0
Declaration
public static Vector Zero(int count, Sparsity sparsity)
Parameters
Type | Name | Description |
---|---|---|
Int32 | count | Number of elements in vector |
Sparsity | sparsity | The Sparsity specification. |
Returns
Type | Description |
---|---|
Vector |
Operators
Addition(Vector, Vector)
Returns the sum of two vectors.
Declaration
public static Vector operator +(Vector a, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | First vector. |
Vector | b | Second vector. |
Returns
Type | Description |
---|---|
Vector | The sum. |
Addition(Vector, Double)
Add a scalar to every element of a vector.
Declaration
public static Vector operator +(Vector a, double b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | A vector. |
Double | b | A scalar. |
Returns
Type | Description |
---|---|
Vector | A vector with the sum. |
Division(Vector, Vector)
Returns the ratio of two vectors
Declaration
public static Vector operator /(Vector a, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | First vector. |
Vector | b | Second vector. |
Returns
Type | Description |
---|---|
Vector | The difference. |
Division(Vector, Double)
Divides every element of a vector by a scalar.
Declaration
public static Vector operator /(Vector a, double b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | A vector. |
Double | b | A scalar. |
Returns
Type | Description |
---|---|
Vector | A new vector with the ratio. |
Equality(Vector, Vector)
Equality operator.
Declaration
public static bool operator ==(Vector a, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | First vector. |
Vector | b | Second vector. |
Returns
Type | Description |
---|---|
Boolean | True if the vectors have the same size and element values. |
ExclusiveOr(Vector, Double)
Returns a vector to some power.
Declaration
public static Vector operator ^(Vector a, double b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | A vector. |
Double | b | A scalar. |
Returns
Type | Description |
---|---|
Vector | A new vector with this[i] = Math.Pow(a[i],b). |
GreaterThan(Vector, Vector)
Greater than operator.
Declaration
public static bool operator>(Vector a, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | First vector. |
Vector | b | Second vector. |
Returns
Type | Description |
---|---|
Boolean | True if each element in the first vector is greater than the corresponding element in the second vector. |
GreaterThan(Vector, Double)
Greater than operator.
Declaration
public static bool operator>(Vector a, double value)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | Vector. |
Double | value | Value to compare against. |
Returns
Type | Description |
---|---|
Boolean | True if each element is greater than given value. |
GreaterThanOrEqual(Vector, Vector)
Greater than or equal to operator.
Declaration
public static bool operator >=(Vector a, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | First vector. |
Vector | b | Second vector. |
Returns
Type | Description |
---|---|
Boolean | True if each element in the first vector is not less than the corresponding element in the second vector. |
GreaterThanOrEqual(Vector, Double)
Greater than or equal to operator.
Declaration
public static bool operator >=(Vector a, double value)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | Vector. |
Double | value | Value to compare against. |
Returns
Type | Description |
---|---|
Boolean | True if each element is not less than given value. |
Inequality(Vector, Vector)
Inequality operator.
Declaration
public static bool operator !=(Vector a, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | First vector. |
Vector | b | Second vector. |
Returns
Type | Description |
---|---|
Boolean | True if vectors are not equal. |
LessThan(Vector, Vector)
Less than operator.
Declaration
public static bool operator <(Vector a, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | First vector. |
Vector | b | Second vector. |
Returns
Type | Description |
---|---|
Boolean | True if each element in the first vector is less than the corresponding element in the second vector. |
LessThan(Vector, Double)
Less than operator.
Declaration
public static bool operator <(Vector a, double value)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | Vector. |
Double | value | Value to compare against. |
Returns
Type | Description |
---|---|
Boolean | True if each element is less than given value. |
LessThanOrEqual(Vector, Vector)
Less than or equal to operator.
Declaration
public static bool operator <=(Vector a, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | First vector. |
Vector | b | Second vector. |
Returns
Type | Description |
---|---|
Boolean | True if each element in the first vector is not greater than the corresponding element in the second vector. |
LessThanOrEqual(Vector, Double)
Less than or equal to operator.
Declaration
public static bool operator <=(Vector a, double value)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | Vector. |
Double | value | Value to compare against. |
Returns
Type | Description |
---|---|
Boolean | True if each element is not greater than given value. |
Multiply(Vector, Vector)
Returns the elementwise product of two vectors.
Declaration
public static Vector operator *(Vector a, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | |
Vector | b |
Returns
Type | Description |
---|---|
Vector | A new vector with the product. |
Multiply(Vector, Double)
Multiplies every element of a vector by a scalar.
Declaration
public static Vector operator *(Vector a, double b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | A vector. |
Double | b | A scalar. |
Returns
Type | Description |
---|---|
Vector | A new vector with the product. |
Multiply(Double, Vector)
Multiply every element of this vector by a scalar.
Declaration
public static Vector operator *(double b, Vector a)
Parameters
Type | Name | Description |
---|---|---|
Double | b | A scalar. |
Vector | a | A vector. |
Returns
Type | Description |
---|---|
Vector | A new vector with the product. |
Subtraction(Vector, Vector)
Returns the difference of two vectors
Declaration
public static Vector operator -(Vector a, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | First vector. |
Vector | b | Second vector. |
Returns
Type | Description |
---|---|
Vector | The difference. |
Subtraction(Vector, Double)
Subtracts a scalar from each element of a vector.
Declaration
public static Vector operator -(Vector a, double b)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | First vector. |
Double | b | A scalar. |
Returns
Type | Description |
---|---|
Vector | The difference. |
Subtraction(Double, Vector)
Subtracts a scalar from each element of a vector.
Declaration
public static Vector operator -(double a, Vector b)
Parameters
Type | Name | Description |
---|---|---|
Double | a | First vector. |
Vector | b | A scalar. |
Returns
Type | Description |
---|---|
Vector | The difference. |
UnaryNegation(Vector)
Returns a vector which is the unary negation of a vector.
Declaration
public static Vector operator -(Vector a)
Parameters
Type | Name | Description |
---|---|---|
Vector | a | The vector to negate. |
Returns
Type | Description |
---|---|
Vector | The negation of a. |
Explicit Interface Implementations
ICollection<Double>.Add(Double)
Declaration
void ICollection<double>.Add(double item)
Parameters
Type | Name | Description |
---|---|---|
Double | item |
ICollection<Double>.Clear()
Declaration
void ICollection<double>.Clear()
ICollection<Double>.Remove(Double)
Declaration
bool ICollection<double>.Remove(double item)
Parameters
Type | Name | Description |
---|---|---|
Double | item |
Returns
Type | Description |
---|---|
Boolean |
IList<Double>.Insert(Int32, Double)
Declaration
void IList<double>.Insert(int index, double item)
Parameters
Type | Name | Description |
---|---|---|
Int32 | index | |
Double | item |
IList<Double>.RemoveAt(Int32)
Declaration
void IList<double>.RemoveAt(int index)
Parameters
Type | Name | Description |
---|---|---|
Int32 | index |
IEnumerable.GetEnumerator()
Declaration
IEnumerator IEnumerable.GetEnumerator()
Returns
Type | Description |
---|---|
IEnumerator |
ICloneable.Clone()
Declaration
object ICloneable.Clone()
Returns
Type | Description |
---|---|
Object |