pub struct CsrArray<T>where
T: Float + Add<Output = T> + Sub<Output = T> + Mul<Output = T> + Div<Output = T> + Debug + Copy + 'static,{ /* private fields */ }
Expand description
CSR Array format
The CSR (Compressed Sparse Row) format stores a sparse array in three arrays:
- data: array of non-zero values
- indices: column indices of the non-zero values
- indptr: index pointers; for each row, points to the first non-zero element
§Notes
- Efficient for row-oriented operations
- Fast matrix-vector multiplications
- Fast row slicing
- Slow column slicing
- Slow constructing by setting individual elements
Implementations§
Source§impl<T> CsrArray<T>
impl<T> CsrArray<T>
Sourcepub fn new(
data: Array1<T>,
indices: Array1<usize>,
indptr: Array1<usize>,
shape: (usize, usize),
) -> SparseResult<Self>
pub fn new( data: Array1<T>, indices: Array1<usize>, indptr: Array1<usize>, shape: (usize, usize), ) -> SparseResult<Self>
Sourcepub fn from_triplets(
rows: &[usize],
cols: &[usize],
data: &[T],
shape: (usize, usize),
sorted: bool,
) -> SparseResult<Self>
pub fn from_triplets( rows: &[usize], cols: &[usize], data: &[T], shape: (usize, usize), sorted: bool, ) -> SparseResult<Self>
Sourcepub fn get_indices(&self) -> &Array1<usize>
pub fn get_indices(&self) -> &Array1<usize>
Get the raw indices array
Sourcepub fn get_indptr(&self) -> &Array1<usize>
pub fn get_indptr(&self) -> &Array1<usize>
Get the raw indptr array
Trait Implementations§
Source§impl<T> SparseArray<T> for CsrArray<T>
impl<T> SparseArray<T> for CsrArray<T>
Source§fn to_coo(&self) -> SparseResult<Box<dyn SparseArray<T>>>
fn to_coo(&self) -> SparseResult<Box<dyn SparseArray<T>>>
Returns a sparse array in COO format.
Source§fn to_csr(&self) -> SparseResult<Box<dyn SparseArray<T>>>
fn to_csr(&self) -> SparseResult<Box<dyn SparseArray<T>>>
Returns a sparse array in CSR format.
Source§fn to_csc(&self) -> SparseResult<Box<dyn SparseArray<T>>>
fn to_csc(&self) -> SparseResult<Box<dyn SparseArray<T>>>
Returns a sparse array in CSC format.
Source§fn to_dok(&self) -> SparseResult<Box<dyn SparseArray<T>>>
fn to_dok(&self) -> SparseResult<Box<dyn SparseArray<T>>>
Returns a sparse array in DOK format.
Source§fn to_lil(&self) -> SparseResult<Box<dyn SparseArray<T>>>
fn to_lil(&self) -> SparseResult<Box<dyn SparseArray<T>>>
Returns a sparse array in LIL format.
Source§fn to_dia(&self) -> SparseResult<Box<dyn SparseArray<T>>>
fn to_dia(&self) -> SparseResult<Box<dyn SparseArray<T>>>
Returns a sparse array in DIA format.
Source§fn to_bsr(&self) -> SparseResult<Box<dyn SparseArray<T>>>
fn to_bsr(&self) -> SparseResult<Box<dyn SparseArray<T>>>
Returns a sparse array in BSR format.
Source§fn add(
&self,
other: &dyn SparseArray<T>,
) -> SparseResult<Box<dyn SparseArray<T>>>
fn add( &self, other: &dyn SparseArray<T>, ) -> SparseResult<Box<dyn SparseArray<T>>>
Element-wise addition.
Source§fn sub(
&self,
other: &dyn SparseArray<T>,
) -> SparseResult<Box<dyn SparseArray<T>>>
fn sub( &self, other: &dyn SparseArray<T>, ) -> SparseResult<Box<dyn SparseArray<T>>>
Element-wise subtraction.
Source§fn mul(
&self,
other: &dyn SparseArray<T>,
) -> SparseResult<Box<dyn SparseArray<T>>>
fn mul( &self, other: &dyn SparseArray<T>, ) -> SparseResult<Box<dyn SparseArray<T>>>
Element-wise multiplication.
Source§fn div(
&self,
other: &dyn SparseArray<T>,
) -> SparseResult<Box<dyn SparseArray<T>>>
fn div( &self, other: &dyn SparseArray<T>, ) -> SparseResult<Box<dyn SparseArray<T>>>
Element-wise division.
Source§fn dot(
&self,
other: &dyn SparseArray<T>,
) -> SparseResult<Box<dyn SparseArray<T>>>
fn dot( &self, other: &dyn SparseArray<T>, ) -> SparseResult<Box<dyn SparseArray<T>>>
Matrix multiplication.
Source§fn dot_vector(&self, other: &ArrayView1<'_, T>) -> SparseResult<Array1<T>>
fn dot_vector(&self, other: &ArrayView1<'_, T>) -> SparseResult<Array1<T>>
Matrix-vector multiplication.
Source§fn transpose(&self) -> SparseResult<Box<dyn SparseArray<T>>>
fn transpose(&self) -> SparseResult<Box<dyn SparseArray<T>>>
Transpose the sparse array.
Source§fn copy(&self) -> Box<dyn SparseArray<T>>
fn copy(&self) -> Box<dyn SparseArray<T>>
Return a copy of the sparse array with the specified elements.
Source§fn set(&mut self, i: usize, j: usize, value: T) -> SparseResult<()>
fn set(&mut self, i: usize, j: usize, value: T) -> SparseResult<()>
Set a value at the specified position.
Source§fn eliminate_zeros(&mut self)
fn eliminate_zeros(&mut self)
Eliminate zeros from the sparse array.
Source§fn sort_indices(&mut self)
fn sort_indices(&mut self)
Sort indices of the sparse array.
Source§fn sorted_indices(&self) -> Box<dyn SparseArray<T>>
fn sorted_indices(&self) -> Box<dyn SparseArray<T>>
Return a sorted copy of this sparse array.
Source§fn has_sorted_indices(&self) -> bool
fn has_sorted_indices(&self) -> bool
Check if indices are sorted.
Source§fn sum(&self, axis: Option<usize>) -> SparseResult<SparseSum<T>>
fn sum(&self, axis: Option<usize>) -> SparseResult<SparseSum<T>>
Sum the sparse array elements. Read more
Source§fn find(&self) -> (Array1<usize>, Array1<usize>, Array1<T>)
fn find(&self) -> (Array1<usize>, Array1<usize>, Array1<T>)
Return the indices and values of the nonzero elements.
Source§fn slice(
&self,
row_range: (usize, usize),
col_range: (usize, usize),
) -> SparseResult<Box<dyn SparseArray<T>>>
fn slice( &self, row_range: (usize, usize), col_range: (usize, usize), ) -> SparseResult<Box<dyn SparseArray<T>>>
Return a slice of the sparse array.
Auto Trait Implementations§
impl<T> Freeze for CsrArray<T>
impl<T> RefUnwindSafe for CsrArray<T>where
T: RefUnwindSafe,
impl<T> Send for CsrArray<T>where
T: Send,
impl<T> Sync for CsrArray<T>where
T: Sync,
impl<T> Unpin for CsrArray<T>
impl<T> UnwindSafe for CsrArray<T>where
T: RefUnwindSafe,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more