pub struct CsrMatrix<T: Scalar> { /* private fields */ }Expand description
Sparse matrix in CSR (Compressed Sparse Row) format.
§Examples
let csr = CsrMatrix::from_triplets(
2, 2,
vec![0, 1], vec![0, 1], vec![1.0, 2.0],
).unwrap();
assert_eq!(csr.nnz(), 2);
assert_eq!(*csr.get(0, 0).unwrap(), 1.0);Implementations§
Source§impl<T: Scalar> CsrMatrix<T>
impl<T: Scalar> CsrMatrix<T>
Sourcepub fn new(nrows: usize, ncols: usize) -> Self
pub fn new(nrows: usize, ncols: usize) -> Self
Create an empty CSR matrix.
§Examples
let csr = CsrMatrix::<f64>::new(3, 3);
assert_eq!(csr.nnz(), 0);Sourcepub fn from_triplets(
nrows: usize,
ncols: usize,
rows: Vec<usize>,
cols: Vec<usize>,
values: Vec<T>,
) -> Result<Self>
pub fn from_triplets( nrows: usize, ncols: usize, rows: Vec<usize>, cols: Vec<usize>, values: Vec<T>, ) -> Result<Self>
Build CSR from triplet data.
§Examples
let csr = CsrMatrix::from_triplets(
2, 2,
vec![0, 1], vec![1, 0], vec![3.0, 4.0],
).unwrap();
assert_eq!(csr.nnz(), 2);Sourcepub fn from_dense(tensor: &Tensor<T>) -> Result<Self>
pub fn from_dense(tensor: &Tensor<T>) -> Result<Self>
Build CSR from a dense 2-D tensor, dropping zero entries.
§Examples
let dense = Tensor::from_vec(vec![1.0, 0.0, 0.0, 2.0], vec![2, 2]).unwrap();
let csr = CsrMatrix::from_dense(&dense).unwrap();
assert_eq!(csr.nnz(), 2);Sourcepub fn get(&self, row: usize, col: usize) -> Option<&T>
pub fn get(&self, row: usize, col: usize) -> Option<&T>
Get the value at (row, col), or None if not stored.
§Examples
let csr = CsrMatrix::from_triplets(
2, 2, vec![0], vec![1], vec![5.0],
).unwrap();
assert_eq!(*csr.get(0, 1).unwrap(), 5.0);
assert!(csr.get(0, 0).is_none());Sourcepub fn to_dense(&self) -> Tensor<T>
pub fn to_dense(&self) -> Tensor<T>
Convert to a dense 2-D tensor.
§Examples
let csr = CsrMatrix::from_triplets(
2, 2, vec![0, 1], vec![0, 1], vec![1.0, 2.0],
).unwrap();
let dense = csr.to_dense();
assert_eq!(dense.as_slice(), &[1.0, 0.0, 0.0, 2.0]);Sourcepub fn matvec(&self, x: &Tensor<T>) -> Result<Tensor<T>>
pub fn matvec(&self, x: &Tensor<T>) -> Result<Tensor<T>>
Sparse matrix x dense vector multiplication.
x must be a 1-D tensor of length ncols.
§Examples
let csr = CsrMatrix::from_triplets(
2, 2, vec![0, 1], vec![0, 1], vec![3.0, 4.0],
).unwrap();
let x = Tensor::from_vec(vec![1.0, 2.0], vec![2]).unwrap();
let y = csr.matvec(&x).unwrap();
assert_eq!(y.as_slice(), &[3.0, 8.0]);Sourcepub fn transpose(&self) -> CscMatrix<T>
pub fn transpose(&self) -> CscMatrix<T>
Transpose, returning a CSC matrix.
§Examples
let csr = CsrMatrix::from_triplets(
2, 3, vec![0, 1], vec![1, 2], vec![1.0, 2.0],
).unwrap();
let csc = csr.transpose();
assert_eq!(csc.nrows(), 3);
assert_eq!(csc.ncols(), 2);Trait Implementations§
Auto Trait Implementations§
impl<T> Freeze for CsrMatrix<T>
impl<T> RefUnwindSafe for CsrMatrix<T>where
T: RefUnwindSafe,
impl<T> Send for CsrMatrix<T>
impl<T> Sync for CsrMatrix<T>
impl<T> Unpin for CsrMatrix<T>where
T: Unpin,
impl<T> UnsafeUnpin for CsrMatrix<T>
impl<T> UnwindSafe for CsrMatrix<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more