_arrays.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. from ._bsr import bsr_matrix
  2. from ._coo import coo_matrix
  3. from ._csc import csc_matrix
  4. from ._csr import csr_matrix
  5. from ._dia import dia_matrix
  6. from ._dok import dok_matrix
  7. from ._lil import lil_matrix
  8. class _sparray:
  9. """This class provides a base class for all sparse arrays.
  10. It cannot be instantiated. Most of the work is provided by subclasses.
  11. """
  12. _is_array = True
  13. @property
  14. def _bsr_container(self):
  15. return bsr_array
  16. @property
  17. def _coo_container(self):
  18. return coo_array
  19. @property
  20. def _csc_container(self):
  21. return csc_array
  22. @property
  23. def _csr_container(self):
  24. return csr_array
  25. @property
  26. def _dia_container(self):
  27. return dia_array
  28. @property
  29. def _dok_container(self):
  30. return dok_array
  31. @property
  32. def _lil_container(self):
  33. return lil_array
  34. # Restore elementwise multiplication
  35. def __mul__(self, *args, **kwargs):
  36. return self.multiply(*args, **kwargs)
  37. def __rmul__(self, *args, **kwargs):
  38. return self.multiply(*args, **kwargs)
  39. # Restore elementwise power
  40. def __pow__(self, *args, **kwargs):
  41. return self.power(*args, **kwargs)
  42. def _matrix_doc_to_array(docstr):
  43. # For opimized builds with stripped docstrings
  44. if docstr is None:
  45. return None
  46. return docstr.replace('matrix', 'array').replace('matrices', 'arrays')
  47. class bsr_array(_sparray, bsr_matrix):
  48. pass
  49. class coo_array(_sparray, coo_matrix):
  50. pass
  51. class csc_array(_sparray, csc_matrix):
  52. pass
  53. class csr_array(_sparray, csr_matrix):
  54. pass
  55. class dia_array(_sparray, dia_matrix):
  56. pass
  57. class dok_array(_sparray, dok_matrix):
  58. pass
  59. class lil_array(_sparray, lil_matrix):
  60. pass
  61. bsr_array.__doc__ = _matrix_doc_to_array(bsr_matrix.__doc__)
  62. coo_array.__doc__ = _matrix_doc_to_array(coo_matrix.__doc__)
  63. csc_array.__doc__ = _matrix_doc_to_array(csc_matrix.__doc__)
  64. csr_array.__doc__ = _matrix_doc_to_array(csr_matrix.__doc__)
  65. dia_array.__doc__ = _matrix_doc_to_array(dia_matrix.__doc__)
  66. dok_array.__doc__ = _matrix_doc_to_array(dok_matrix.__doc__)
  67. lil_array.__doc__ = _matrix_doc_to_array(lil_matrix.__doc__)