Class CsrRingMatrix<T extends Ring<T>>
java.lang.Object
org.flag4j.arrays.backend.AbstractTensor<CsrRingMatrix<T>,T[],T>
org.flag4j.arrays.backend.semiring_arrays.AbstractCsrSemiringMatrix<CsrRingMatrix<T>,RingMatrix<T>,CooRingVector<T>,T>
org.flag4j.arrays.backend.ring_arrays.AbstractCsrRingMatrix<CsrRingMatrix<T>,RingMatrix<T>,CooRingVector<T>,T>
org.flag4j.arrays.sparse.CsrRingMatrix<T>
- All Implemented Interfaces:
Serializable
,MatrixMixin<CsrRingMatrix<T>,
,RingMatrix<T>, CooRingVector<T>, T> RingTensorMixin<CsrRingMatrix<T>,
,RingMatrix<T>, T> TensorOverRing<CsrRingMatrix<T>,
,RingMatrix<T>, T[], T> SemiringTensorMixin<CsrRingMatrix<T>,
,RingMatrix<T>, T> TensorOverSemiring<CsrRingMatrix<T>,
RingMatrix<T>, T[], T>
public class CsrRingMatrix<T extends Ring<T>>
extends AbstractCsrRingMatrix<CsrRingMatrix<T>,RingMatrix<T>,CooRingVector<T>,T>
- See Also:
-
Field Summary
Fields inherited from class org.flag4j.arrays.backend.semiring_arrays.AbstractCsrSemiringMatrix
colIndices, nnz, numCols, numRows, rowPointers, sparsity, zeroElement
Fields inherited from class org.flag4j.arrays.backend.AbstractTensor
data, rank, shape
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a sparse CSR matrix with the specifiedshape
, non-zero data, row pointers, and non-zero column indices.CsrRingMatrix
(Shape shape, T ringElement) Constructs a sparse CSR matrix representing the zero matrix for the field whichringElement
belongs to.CsrRingMatrix
(Shape shape, T[] entries, int[] rowPointers, int[] colIndices) Creates a sparse CSR matrix with the specifiedshape
, non-zero data, row pointers, and non-zero column indices. -
Method Summary
Modifier and TypeMethodDescriptionabs()
Computes the element-wise absolute value of this tensor.<R> R
accept
(MatrixVisitor<R> visitor) Accepts a visitor that implements theMatrixVisitor
interface.coalesce()
Coalesces this sparse CSR matrix.coalesce
(BinaryOperator<T> aggregator) Coalesces this sparse COO matrix.Drops any explicit zeros in this sparse COO matrix.getCol
(int colIdx, int rowStart, int rowEnd) Gets a range of a column of this matrix.getDiag
(int diagOffset) Gets the elements of this matrix along the specified diagonal.getRow
(int rowIdx, int colStart, int colEnd) Gets a range of a row of this matrix.makeLikeCooMatrix
(Shape shape, T[] entries, int[] rowIndices, int[] colIndices) Constructs a sparse COO matrix of a similar type to this sparse CSR matrix.makeLikeDenseTensor
(Shape shape, T[] entries) Constructs a dense matrix which is of a similar type to this sparse CSR matrix.Constructs a CSR matrix with the specified shape, non-zero data, and non-zero indices.makeLikeTensor
(Shape shape, T[] entries) Constructs a tensor of the same type as this tensor with the given theshape
anddata
.makeLikeTensor
(Shape shape, T[] entries, int[] rowPointers, int[] colIndices) Constructs a sparse CSR tensor of the same type as this tensor with the specified non-zero data and indices.mult
(CooRingVector<T> b) Computes the matrix-vector multiplication of a vector with this matrix.tensorDot
(CsrRingMatrix<T> src2, int[] aAxes, int[] bAxes) Computes the tensor contraction of this tensor with a specified tensor over the specified set of axes.toCoo()
Converts this sparse CSR matrix to an equivalent sparse COO matrix.toString()
Formats this sparse matrix as a human-readable string.toTensor()
Converts this CSR matrix to an equivalent sparse COO tensor.Converts this CSR matrix to an equivalent COO tensor with the specified shape.Methods inherited from class org.flag4j.arrays.backend.ring_arrays.AbstractCsrRingMatrix
allClose, allClose, div, H, H, H, sub
Methods inherited from class org.flag4j.arrays.backend.semiring_arrays.AbstractCsrSemiringMatrix
add, augment, augment, copy, dataLength, density, elemMult, flatten, flatten, get, get, getSlice, getTriL, getTriU, getZeroElement, isHermitian, isI, isOrthogonal, isSymmetric, isTriL, isTriU, mult, multToSparse, multTranspose, numCols, numRows, removeCol, removeCols, removeRow, removeRows, reshape, set, set, setCol, setRow, setSliceCopy, setZeroElement, sortIndices, sparsity, stack, swapCols, swapRows, T, T, T, tensorTr, toDense, toVector, tr
Methods inherited from class org.flag4j.arrays.backend.AbstractTensor
getData, getRank, getShape, reshape, sameShape, totalEntries
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.flag4j.arrays.backend.MatrixMixin
add, augment, augment, copy, dataLength, elemMult, fib, get, getCol, getDiag, getRow, getShape, getSlice, getTriL, getTriL, getTriU, getTriU, isDiag, isHermitian, isI, isOrthogonal, isSquare, isSymmetric, isTri, isTriL, isTriU, isVector, mult, multTranspose, numCols, numRows, removeCol, removeCols, removeRow, removeRows, set, setCol, setRow, setSliceCopy, stack, stack, swapCols, swapRows, T, toVector, tr, trace, vectorType
Methods inherited from interface org.flag4j.arrays.backend.ring_arrays.RingTensorMixin
add, addEq, argmax, argmaxAbs, argmin, argminAbs, conj, isOnes, isZeros, makeEmptyDataArray, max, maxAbs, min, minAbs, mult, multEq, norm, norm, prod, sub, subEq, sum
Methods inherited from interface org.flag4j.arrays.backend.semiring_arrays.SemiringTensorMixin
argmax, argmin, max, min
-
Constructor Details
-
CsrRingMatrix
Creates a sparse CSR matrix with the specifiedshape
, non-zero data, row pointers, and non-zero column indices.- Parameters:
shape
- Shape of this tensor.entries
- The non-zero data of this CSR matrix.rowPointers
- The row pointers for the non-zero values in the sparse CSR matrix.rowPointers[i]
indicates the starting index withindata
andcolData
of all values in rowi
.colIndices
- Column indices for each non-zero value in this sparse CSR matrix. Must satisfydata.length == colData.length
.
-
CsrRingMatrix
public CsrRingMatrix(Shape shape, List<T> entries, List<Integer> rowPointers, List<Integer> colIndices) Creates a sparse CSR matrix with the specifiedshape
, non-zero data, row pointers, and non-zero column indices.- Parameters:
shape
- Shape of this tensor.entries
- The non-zero data of this CSR matrix.rowPointers
- The row pointers for the non-zero values in the sparse CSR matrix.rowPointers[i]
indicates the starting index withindata
andcolData
of all values in rowi
.colIndices
- Column indices for each non-zero value in this sparse CSR matrix. Must satisfydata.length == colData.length
.
-
CsrRingMatrix
-
-
Method Details
-
makeLikeTensor
public CsrRingMatrix<T> makeLikeTensor(Shape shape, T[] entries, int[] rowPointers, int[] colIndices) Constructs a sparse CSR tensor of the same type as this tensor with the specified non-zero data and indices.- Specified by:
makeLikeTensor
in classAbstractCsrSemiringMatrix<CsrRingMatrix<T extends Ring<T>>,
RingMatrix<T extends Ring<T>>, CooRingVector<T extends Ring<T>>, T extends Ring<T>> - Parameters:
shape
- Shape of the matrix.entries
- Non-zero data of the CSR matrix.rowPointers
- Row pointers for the non-zero values in the CSR matrix.colIndices
- Non-zero column indices of the CSR matrix.- Returns:
- A sparse CSR tensor of the same type as this tensor with the specified non-zero data and indices.
-
makeLikeTensor
public CsrRingMatrix<T> makeLikeTensor(Shape shape, List<T> entries, List<Integer> rowPointers, List<Integer> colIndices) Constructs a CSR matrix with the specified shape, non-zero data, and non-zero indices.- Specified by:
makeLikeTensor
in classAbstractCsrSemiringMatrix<CsrRingMatrix<T extends Ring<T>>,
RingMatrix<T extends Ring<T>>, CooRingVector<T extends Ring<T>>, T extends Ring<T>> - Parameters:
shape
- Shape of the matrix.entries
- Non-zero values of the CSR matrix.rowPointers
- Row pointers for the non-zero values in the CSR matrix.colIndices
- Non-zero column indices of the CSR matrix.- Returns:
- A CSR matrix with the specified shape, non-zero data, and non-zero indices.
-
makeLikeDenseTensor
Constructs a dense matrix which is of a similar type to this sparse CSR matrix.- Specified by:
makeLikeDenseTensor
in classAbstractCsrSemiringMatrix<CsrRingMatrix<T extends Ring<T>>,
RingMatrix<T extends Ring<T>>, CooRingVector<T extends Ring<T>>, T extends Ring<T>> - Parameters:
shape
- Shape of the dense matrix.entries
- Entries of the dense matrix.- Returns:
- A dense matrix which is of a similar type to this sparse CSR matrix with the specified
shape
anddata
.
-
makeLikeCooMatrix
public CooRingMatrix<T> makeLikeCooMatrix(Shape shape, T[] entries, int[] rowIndices, int[] colIndices) Constructs a sparse COO matrix of a similar type to this sparse CSR matrix.
Note: this method constructs a new COO matrix with the specified data and indices. It does not convert this matrix to a CSR matrix. To convert this matrix to a sparse COO matrix use
toCoo()
.- Specified by:
makeLikeCooMatrix
in classAbstractCsrSemiringMatrix<CsrRingMatrix<T extends Ring<T>>,
RingMatrix<T extends Ring<T>>, CooRingVector<T extends Ring<T>>, T extends Ring<T>> - Parameters:
shape
- Shape of the COO matrix.entries
- Non-zero data of the COO matrix.rowIndices
- Non-zero row indices of the sparse COO matrix.colIndices
- Non-zero column indices of the Sparse COO matrix.- Returns:
- A sparse COO matrix of a similar type to this sparse CSR matrix.
-
toCoo
Converts this sparse CSR matrix to an equivalent sparse COO matrix.- Specified by:
toCoo
in classAbstractCsrSemiringMatrix<CsrRingMatrix<T extends Ring<T>>,
RingMatrix<T extends Ring<T>>, CooRingVector<T extends Ring<T>>, T extends Ring<T>> - Returns:
- A sparse COO matrix equivalent to this sparse CSR matrix.
-
makeLikeTensor
Constructs a tensor of the same type as this tensor with the given theshape
anddata
. The resulting tensor will also have the same non-zero indices as this tensor.- Specified by:
makeLikeTensor
in interfaceTensorOverSemiring<CsrRingMatrix<T extends Ring<T>>,
RingMatrix<T extends Ring<T>>, T extends Ring<T>[], T extends Ring<T>> - Specified by:
makeLikeTensor
in classAbstractTensor<CsrRingMatrix<T extends Ring<T>>,
T extends Ring<T>[], T extends Ring<T>> - Parameters:
shape
- Shape of the tensor to construct.entries
- Entries of the tensor to construct.- Returns:
- A tensor of the same type and with the same non-zero indices as this tensor with the given the
shape
anddata
.
-
tensorDot
Computes the tensor contraction of this tensor with a specified tensor over the specified set of axes. That is, computes the sum of products between the two tensors along the specified set of axes.- Parameters:
src2
- Tensor to contract with this tensor.aAxes
- Axes along which to compute products for this tensor.bAxes
- Axes along which to compute products forsrc2
tensor.- Returns:
- The tensor dot product over the specified axes.
- Throws:
IllegalArgumentException
- If the two tensors shapes do not match along the specified axes pairwise inaAxes
andbAxes
.IllegalArgumentException
- IfaAxes
andbAxes
do not match in length, or if any of the axes are out of bounds for the corresponding tensor.
-
mult
Computes the matrix-vector multiplication of a vector with this matrix.- Parameters:
b
- Vector in the matrix-vector multiplication.- Returns:
- The result of multiplying this matrix with
b
. - Throws:
LinearAlgebraException
- If the number of columns in this matrix do not equal the size ofb
.
-
getRow
Gets a range of a row of this matrix.- Parameters:
rowIdx
- The index of the row to get.colStart
- The staring column of the row range to get (inclusive).colEnd
- The ending column of the row range to get (exclusive).- Returns:
- A vector containing the elements of the specified row over the range [colStart, colEnd).
- Throws:
IllegalArgumentException
- IfrowIdx < 0 || rowIdx >= this.numRows()
orcolStart < 0 || colStart >= numCols
orcolEnd < colStart || colEnd > numCols
.
-
getCol
Gets a range of a column of this matrix.- Parameters:
colIdx
- The index of the column to get.rowStart
- The staring row of the column range to get (inclusive).rowEnd
- The ending row of the column range to get (exclusive).- Returns:
- A vector containing the elements of the specified column over the range [rowStart, rowEnd).
- Throws:
IllegalArgumentException
- IfcolIdx < 0 || colIdx >= this.numCols()
orrowStart < 0 || rowStart >= numRows
orrowEnd < rowStart || rowEnd > numRows
.
-
getDiag
Gets the elements of this matrix along the specified diagonal.- Parameters:
diagOffset
- The diagonal to get within this matrix.- If
diagOffset == 0
: Then the elements of the principle diagonal are collected. - If
diagOffset < 0
: Then the elements of the sub-diagonaldiagOffset
below the principle diagonal are collected. - If
diagOffset > 0
: Then the elements of the super-diagonaldiagOffset
above the principle diagonal are collected.
- If
- Returns:
- The elements of the specified diagonal as a vector.
-
accept
Accepts a visitor that implements theMatrixVisitor
interface. This method is part of the "Visitor Pattern" and allows operations to be performed on the matrix without modifying the matrix's class directly.- Type Parameters:
R
- The return type of the visitor's operation.- Parameters:
visitor
- The visitor implementing the operation to be performed.- Returns:
- The result of the visitor's operation, typically another matrix or a scalar value.
- Throws:
NullPointerException
- if the visitor isnull
.
-
toTensor
Converts this CSR matrix to an equivalent sparse COO tensor.- Specified by:
toTensor
in classAbstractCsrSemiringMatrix<CsrRingMatrix<T extends Ring<T>>,
RingMatrix<T extends Ring<T>>, CooRingVector<T extends Ring<T>>, T extends Ring<T>> - Returns:
- An sparse COO tensor equivalent to this CSR matrix.
-
toTensor
Converts this CSR matrix to an equivalent COO tensor with the specified shape.- Overrides:
toTensor
in classAbstractCsrSemiringMatrix<CsrRingMatrix<T extends Ring<T>>,
RingMatrix<T extends Ring<T>>, CooRingVector<T extends Ring<T>>, T extends Ring<T>> - Parameters:
shape
- @return A COO tensor equivalent to this CSR matrix which has been reshaped tonewShape
- Returns:
- A COO tensor equivalent to this CSR matrix which has been reshaped to
newShape
-
abs
Computes the element-wise absolute value of this tensor.- Returns:
- The element-wise absolute value of this tensor.
-
dropZeros
Drops any explicit zeros in this sparse COO matrix.- Returns:
- A copy of this Csr matrix with any explicitly stored zeros removed.
-
coalesce
Coalesces this sparse CSR matrix. An uncoalesced matrix is a sparse matrix with multiple data for a single index. This method will ensure that each index only has one non-zero value by summing duplicated data. If another form of aggregation other than summing is desired, usecoalesce(BinaryOperator)
.- Returns:
- A new coalesced sparse CSR matrix which is equivalent to this CSR matrix.
- See Also:
-
coalesce
Coalesces this sparse COO matrix. An uncoalesced matrix is a sparse matrix with multiple data for a single index. This method will ensure that each index only has one non-zero value by aggregating duplicated data usingaggregator
.- Parameters:
aggregator
- Custom aggregation function to combine multiple.- Returns:
- A new coalesced sparse COO matrix which is equivalent to this COO matrix.
- See Also:
-
toString
-