114 lines
3.0 KiB
Python
114 lines
3.0 KiB
Python
|
class spmatrix:
|
||
|
"""This class provides a base class for all sparse matrix classes.
|
||
|
|
||
|
It cannot be instantiated. Most of the work is provided by subclasses.
|
||
|
"""
|
||
|
|
||
|
@property
|
||
|
def _bsr_container(self):
|
||
|
from ._bsr import bsr_matrix
|
||
|
return bsr_matrix
|
||
|
|
||
|
@property
|
||
|
def _coo_container(self):
|
||
|
from ._coo import coo_matrix
|
||
|
return coo_matrix
|
||
|
|
||
|
@property
|
||
|
def _csc_container(self):
|
||
|
from ._csc import csc_matrix
|
||
|
return csc_matrix
|
||
|
|
||
|
@property
|
||
|
def _csr_container(self):
|
||
|
from ._csr import csr_matrix
|
||
|
return csr_matrix
|
||
|
|
||
|
@property
|
||
|
def _dia_container(self):
|
||
|
from ._dia import dia_matrix
|
||
|
return dia_matrix
|
||
|
|
||
|
@property
|
||
|
def _dok_container(self):
|
||
|
from ._dok import dok_matrix
|
||
|
return dok_matrix
|
||
|
|
||
|
@property
|
||
|
def _lil_container(self):
|
||
|
from ._lil import lil_matrix
|
||
|
return lil_matrix
|
||
|
|
||
|
# Restore matrix multiplication
|
||
|
def __mul__(self, other):
|
||
|
return self._matmul_dispatch(other)
|
||
|
|
||
|
def __rmul__(self, other):
|
||
|
return self._rmatmul_dispatch(other)
|
||
|
|
||
|
# Restore matrix power
|
||
|
def __pow__(self, power):
|
||
|
from .linalg import matrix_power
|
||
|
|
||
|
return matrix_power(self, power)
|
||
|
|
||
|
## Backward compatibility
|
||
|
|
||
|
def set_shape(self, shape):
|
||
|
"""Set the shape of the matrix in-place"""
|
||
|
# Make sure copy is False since this is in place
|
||
|
# Make sure format is unchanged because we are doing a __dict__ swap
|
||
|
new_self = self.reshape(shape, copy=False).asformat(self.format)
|
||
|
self.__dict__ = new_self.__dict__
|
||
|
|
||
|
def get_shape(self):
|
||
|
"""Get the shape of the matrix"""
|
||
|
return self._shape
|
||
|
|
||
|
shape = property(fget=get_shape, fset=set_shape,
|
||
|
doc="Shape of the matrix")
|
||
|
|
||
|
def asfptype(self):
|
||
|
"""Upcast matrix to a floating point format (if necessary)"""
|
||
|
return self._asfptype()
|
||
|
|
||
|
def getmaxprint(self):
|
||
|
"""Maximum number of elements to display when printed."""
|
||
|
return self._getmaxprint()
|
||
|
|
||
|
def getformat(self):
|
||
|
"""Matrix storage format"""
|
||
|
return self.format
|
||
|
|
||
|
def getnnz(self, axis=None):
|
||
|
"""Number of stored values, including explicit zeros.
|
||
|
|
||
|
Parameters
|
||
|
----------
|
||
|
axis : None, 0, or 1
|
||
|
Select between the number of values across the whole array, in
|
||
|
each column, or in each row.
|
||
|
"""
|
||
|
return self._getnnz(axis=axis)
|
||
|
|
||
|
def getH(self):
|
||
|
"""Return the Hermitian transpose of this matrix.
|
||
|
|
||
|
See Also
|
||
|
--------
|
||
|
numpy.matrix.getH : NumPy's implementation of `getH` for matrices
|
||
|
"""
|
||
|
return self.conjugate().transpose()
|
||
|
|
||
|
def getcol(self, j):
|
||
|
"""Returns a copy of column j of the matrix, as an (m x 1) sparse
|
||
|
matrix (column vector).
|
||
|
"""
|
||
|
return self._getcol(j)
|
||
|
|
||
|
def getrow(self, i):
|
||
|
"""Returns a copy of row i of the matrix, as a (1 x n) sparse
|
||
|
matrix (row vector).
|
||
|
"""
|
||
|
return self._getrow(i)
|