o
    h                     @   s*   d dl mZmZ G dd dZdd ZdS )   )	isintlikeisscalarlikec                   @   s   e Zd ZdZdZedd Zedd Zedd Zed	d
 Z	edd Z
edd Zedd Zdd Zdd Zdd Zdd Zdd ZeeeddZdd Zdd  Zd!d" Zd,d$d%Zd&d' Zd(d) Zd*d+ Zd#S )-spmatrixzThis class provides a base class for all sparse matrix classes.

    It cannot be instantiated.  Most of the work is provided by subclasses.
    Fc                 C      ddl m} |S )Nr   )
bsr_matrix)_bsrr   )selfr    r	   O/var/www/html/scripts/venv/lib/python3.10/site-packages/scipy/sparse/_matrix.py_bsr_container      zspmatrix._bsr_containerc                 C   r   )Nr   )
coo_matrix)_coor   )r   r   r	   r	   r
   _coo_container   r   zspmatrix._coo_containerc                 C   r   )Nr   )
csc_matrix)_cscr   )r   r   r	   r	   r
   _csc_container   r   zspmatrix._csc_containerc                 C   r   )Nr   )
csr_matrix)_csrr   )r   r   r	   r	   r
   _csr_container   r   zspmatrix._csr_containerc                 C   r   )Nr   )
dia_matrix)_diar   )r   r   r	   r	   r
   _dia_container   r   zspmatrix._dia_containerc                 C   r   )Nr   )
dok_matrix)_dokr   )r   r   r	   r	   r
   _dok_container$   r   zspmatrix._dok_containerc                 C   r   )Nr   )
lil_matrix)_lilr   )r   r   r	   r	   r
   _lil_container)   r   zspmatrix._lil_containerc                 C   
   |  |S N)_mul_dispatchr   otherr	   r	   r
   __mul__/      
zspmatrix.__mul__c                 C   r   r    )_rmul_dispatchr"   r	   r	   r
   __rmul__2   r%   zspmatrix.__rmul__c                 C   s   | j \}}||krtdt|rKt|}|dk rtd|dkr.ddlm} ||| jdS |dkr6|  S | 	|d }|d rG| | | S || S t
|rStdtS )	Nzsparse matrix is not square    zexponent must be >= 0r   )eye)dtype   zexponent must be an integer)shape	TypeErrorr   int
ValueError
_constructr)   r*   copy__pow__r   NotImplemented)r   r#   MNr)   tmpr	   r	   r
   r2   6   s&   
zspmatrix.__pow__c                 C   s"   | j |dd| j}|j| _dS )z$Set the shape of the matrix in-placeF)r1   N)reshapeasformatformat__dict__)r   r,   new_selfr	   r	   r
   	set_shapeS   s   zspmatrix.set_shapec                 C      | j S )zGet the shape of the matrix)_shaper   r	   r	   r
   	get_shapeZ      zspmatrix.get_shapezShape of the matrix)fgetfsetdocc                 C      |   S )z6Upcast array to a floating point format (if necessary))	_asfptyper?   r	   r	   r
   asfptypea      zspmatrix.asfptypec                 C   rE   )z3Maximum number of elements to display when printed.)_getmaxprintr?   r	   r	   r
   getmaxprinte   rH   zspmatrix.getmaxprintc                 C   r=   )zMatrix storage format)r9   r?   r	   r	   r
   	getformati   rA   zspmatrix.getformatNc                 C   s   | j |dS )zNumber 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.
        )axis)_getnnz)r   rL   r	   r	   r
   getnnzm   s   	zspmatrix.getnnzc                 C   s   |    S )zReturn the Hermitian transpose of this array.

        See Also
        --------
        numpy.matrix.getH : NumPy's implementation of `getH` for matrices
        )	conjugate	transposer?   r	   r	   r
   getHx   s   zspmatrix.getHc                 C   r   )zeReturns a copy of column j of the array, as an (m x 1) sparse
        array (column vector).
        )_getcol)r   jr	   r	   r
   getcol      
zspmatrix.getcolc                 C   r   )z^Returns a copy of row i of the array, as a (1 x n) sparse
        array (row vector).
        )_getrow)r   ir	   r	   r
   getrow   rU   zspmatrix.getrowr    )__name__
__module____qualname____doc__	_is_arraypropertyr   r   r   r   r   r   r   r$   r'   r2   r<   r@   r,   rG   rJ   rK   rN   rQ   rT   rX   r	   r	   r	   r
   r      s@    







	r   c                 C   s    | d u rd S |  dd ddS )Nzsparse arrayszsparse matriceszsparse arrayzsparse matrix)replace)docstrr	   r	   r
   _array_doc_to_matrix   s
   
ra   N)_sputilsr   r   r   ra   r	   r	   r	   r
   <module>   s     