ó
    EñiÂ  ã                   óJ   • S r Sr/ SQrSSKJrJr  SSKJr  S rS
S jr	S
S	 jr
g)z.Functions to extract parts of sparse matrices
zrestructuredtext en)ÚfindÚtrilÚtriué   )Ú
coo_matrixÚ	coo_array)Úsparrayc                 ó¬   • [        U SS9n U R                  5         U R                  S:g  nU R                  U   U R                  U   U R                  U   4$ )a  Return the indices and values of the nonzero elements of a matrix

Parameters
----------
A : dense or sparse array or matrix
    Matrix whose nonzero elements are desired.

Returns
-------
(I,J,V) : tuple of arrays
    I,J, and V contain the row indices, column indices, and values
    of the nonzero entries.


Examples
--------
>>> from scipy.sparse import csr_array, find
>>> A = csr_array([[7.0, 8.0, 0],[0, 0, 9.0]])
>>> find(A)
(array([0, 0, 1], dtype=int32),
 array([0, 1, 2], dtype=int32),
 array([ 7.,  8.,  9.]))

T©Úcopyé    )r   Úsum_duplicatesÚdataÚrowÚcol)ÚAÚnz_masks     ÚR/home/mande/repo/quber/.venv/lib/python3.13/site-packages/scipy/sparse/_extract.pyr   r      sN   € ô4 	�!˜$Ñ€AØ×ÑÔà�f‰f˜‰k€GØ�5‰5�‰>˜1Ÿ5™5 ™>¨1¯6©6°'©?Ð:Ð:ó    Nc                 óD  • [        U [        5      (       a  [        O[        nU" U SS9n U R                  U-   U R
                  :¬  nU R                  U   nU R
                  U   nU R                  U   nU" XuU44U R                  U R                  S9nUR                  U5      $ )av  Return the lower triangular portion of a sparse array or matrix

Returns the elements on or below the k-th diagonal of A.
    - k = 0 corresponds to the main diagonal
    - k > 0 is above the main diagonal
    - k < 0 is below the main diagonal

Parameters
----------
A : dense or sparse array or matrix
    Matrix whose lower trianglar portion is desired.
k : integer : optional
    The top-most diagonal of the lower triangle.
format : string
    Sparse format of the result, e.g. format="csr", etc.

Returns
-------
L : sparse matrix
    Lower triangular portion of A in sparse format.

See Also
--------
triu : upper triangle in sparse format

Examples
--------
>>> from scipy.sparse import csr_array, tril
>>> A = csr_array([[1, 2, 0, 0, 3], [4, 5, 0, 6, 7], [0, 0, 8, 9, 0]],
...               dtype='int32')
>>> A.toarray()
array([[1, 2, 0, 0, 3],
       [4, 5, 0, 6, 7],
       [0, 0, 8, 9, 0]], dtype=int32)
>>> tril(A).toarray()
array([[1, 0, 0, 0, 0],
       [4, 5, 0, 0, 0],
       [0, 0, 8, 0, 0]], dtype=int32)
>>> tril(A).nnz
4
>>> tril(A, k=1).toarray()
array([[1, 2, 0, 0, 0],
       [4, 5, 0, 0, 0],
       [0, 0, 8, 9, 0]], dtype=int32)
>>> tril(A, k=-1).toarray()
array([[0, 0, 0, 0, 0],
       [4, 0, 0, 0, 0],
       [0, 0, 0, 0, 0]], dtype=int32)
>>> tril(A, format='csc')
<Compressed Sparse Column sparse array of dtype 'int32'
    with 4 stored elements and shape (3, 5)>

Fr
   ©ÚshapeÚdtype©
Ú
isinstancer   r   r   r   r   r   r   r   Úasformat©	r   ÚkÚformatÚ
coo_sparseÚmaskr   r   r   Únew_coos	            r   r   r   .   s‘   € ôl )¨¬G×4Ñ4•¼*€Jñ 	�1˜5Ñ!€AØ�5‰5�1‰9˜Ÿ™Ñ€Dà
�%‰%�‰+€CØ
�%‰%�‰+€CØ�6‰6�$‰<€DÙ˜$ c 
Ð+°1·7±7À!Ç'Á'ÑJ€GØ×Ñ˜FÓ#Ð#r   c                 óD  • [        U [        5      (       a  [        O[        nU" U SS9n U R                  U-   U R
                  :*  nU R                  U   nU R
                  U   nU R                  U   nU" XuU44U R                  U R                  S9nUR                  U5      $ )a¾  Return the upper triangular portion of a sparse array or matrix

Returns the elements on or above the k-th diagonal of A.
    - k = 0 corresponds to the main diagonal
    - k > 0 is above the main diagonal
    - k < 0 is below the main diagonal

Parameters
----------
A : dense or sparse array or matrix
    Matrix whose upper trianglar portion is desired.
k : integer : optional
    The bottom-most diagonal of the upper triangle.
format : string
    Sparse format of the result, e.g. format="csr", etc.

Returns
-------
L : sparse array or matrix
    Upper triangular portion of A in sparse format.
    Sparse array if A is a sparse array, otherwise matrix.

See Also
--------
tril : lower triangle in sparse format

Examples
--------
>>> from scipy.sparse import csr_array, triu
>>> A = csr_array([[1, 2, 0, 0, 3], [4, 5, 0, 6, 7], [0, 0, 8, 9, 0]],
...                dtype='int32')
>>> A.toarray()
array([[1, 2, 0, 0, 3],
       [4, 5, 0, 6, 7],
       [0, 0, 8, 9, 0]], dtype=int32)
>>> triu(A).toarray()
array([[1, 2, 0, 0, 3],
       [0, 5, 0, 6, 7],
       [0, 0, 8, 9, 0]], dtype=int32)
>>> triu(A).nnz
8
>>> triu(A, k=1).toarray()
array([[0, 2, 0, 0, 3],
       [0, 0, 0, 6, 7],
       [0, 0, 0, 9, 0]], dtype=int32)
>>> triu(A, k=-1).toarray()
array([[1, 2, 0, 0, 3],
       [4, 5, 0, 6, 7],
       [0, 0, 8, 9, 0]], dtype=int32)
>>> triu(A, format='csc')
<Compressed Sparse Column sparse array of dtype 'int32'
    with 8 stored elements and shape (3, 5)>

Fr
   r   r   r   s	            r   r   r   q   s‘   € ôn )¨¬G×4Ñ4•¼*€Jñ 	�1˜5Ñ!€AØ�5‰5�1‰9˜Ÿ™Ñ€Dà
�%‰%�‰+€CØ
�%‰%�‰+€CØ�6‰6�$‰<€DÙ˜$ c 
Ð+°1·7±7À!Ç'Á'ÑJ€GØ×Ñ˜FÓ#Ð#r   )r   N)Ú__doc__Ú__docformat__Ú__all__Ú_coor   r   Ú_baser   r   r   r   © r   r   Ú<module>r)      s1   ðñð &€â
"€÷ (Ý ò;ôB@$õFA$r   