+
    Y°³j«2  ã                   ó®   € R t Rt. ROt^ RIt^RIHt ^RIHtH	t	 ^RI
HtHt ^RIHt ^R	IHt  ! R
 R]4      tR t ! R R]]	4      t ! R R]]4      tR# )z&Compressed Sparse Column matrix formatzrestructuredtext enÚ	csc_arrayÚ
csc_matrixN)Úspmatrix)Ú_spbaseÚsparray)Ú	csr_tocscÚ	expandptr)Úupcast)Ú
_cs_matrixc                   óf  a € ] tR t^t o RtRR lt]P
                  P                  ]n        R tRR lt	]P                  P                  ]	n        RR lt
]P                  P                  ]
n        R t]P                  P                  ]n        R tR	 tR
 tR tR tR tR tR t]R 4       tRtV tR# )Ú	_csc_baseÚcscNc                ó¶   € Ve   VR8w  d   \        R4      hV P                  w  r4V P                  V P                  V P                  V P
                  3WC3VR7      # )NzvSparse arrays/matrices do not support an 'axes' parameter because swapping dimensions is the only logical permutation.©Úcopy)é   é    )Ú
ValueErrorÚshapeÚ_csr_containerÚdataÚindicesÚindptr)ÚselfÚaxesr   ÚMÚNs   &&&  ÚR/home/luca/screen-checking/.venv/lib/python3.14/site-packages/scipy/sparse/_csc.pyÚ	transposeÚ_csc_base.transpose   si   € ØÒ ¨¤Üð Ló Mð Mð �z‰z‰ˆà×"Ñ" D§I¡I¨t¯|©|Ø$(§K¡Kð$1Ø34°&¸tð #ó Eð 	Eó    c              #  óB   "  € V P                  4        R j  x€L
  R #  L5i©N)Útocsr)r   s   &r   Ú__iter__Ú_csc_base.__iter__!   s   é € Ø—:‘:“<×Ôùs   ‚–—c                ó6   € V'       d   V P                  4       # V # r"   r   )r   r   s   &&r   ÚtocscÚ_csc_base.tocsc$   s   € ßØ—9‘9“;ÐàˆKr    c           
     óx  € V P                   w  r#V P                  V P                  V P                  3\	        V P
                  V4      R 7      p\        P                  ! V^,           VR7      p\        P                  ! V P
                  VR7      p\        P                  ! V P
                  \        V P                  4      R7      p\        W2V P                  P                  VRR7      V P                  P                  VRR7      V P                  VVV4       V P                  WvV3V P                   RR7      pRVn        V# ))Úmaxval©ÚdtypeFr   )r   r   T)r   Ú_get_index_dtyper   r   ÚmaxÚnnzÚnpÚemptyr	   r,   r   Úastyper   r   Úhas_sorted_indices)	r   r   r   r   Ú	idx_dtyper   r   r   ÚAs	   &&       r   r#   Ú_csc_base.tocsr,   s  € Ø�j‰j‰ˆØ×)Ñ)¨4¯;©;¸¿¹Ð*EÜ+.¨t¯x©x¸Ó+;ð *ó =ˆ	ä—’˜!˜a�% yÔ1ˆÜ—(’(˜4Ÿ8™8¨9Ô5ˆÜ�xŠx˜Ÿ™¬¨t¯z©zÓ(:Ô;ˆä�!Ø—+‘+×$Ñ$ Y°UÐ$Ó;Ø—,‘,×%Ñ% i°eÐ%Ó<Ø—)‘)ØØØô	ð ×ÑØ˜FÐ#Ø—*‘* 5ð  ó 
ˆð  $ˆÔØˆr    c                ó¦  € V P                  V P                  4      w  rV P                  p\        P                  ! \        V4      V P                  P                  R 7      p\        WP                  V4       V P                  WC34      w  rVV P                  ^ 8g  pWW,          pWg,          p\        P                  ! VRR7      pWX,          pWh,          pWV3# )r+   Ú	mergesort)Úkind)Ú_swapr   r   r0   r1   Úlenr,   r   r   r   Úargsort)	r   Ú	major_dimÚ	minor_dimÚminor_indicesÚmajor_indicesÚrowÚcolÚnz_maskÚinds	   &        r   ÚnonzeroÚ_csc_base.nonzeroE   s¦   € ð
  $Ÿz™z¨$¯*©*Ó5Ñˆ	ØŸ™ˆÜŸš¤ ]Ó!3¸4¿<¹<×;MÑ;MÔNˆÜ�)Ÿ[™[¨-Ô8Ø—:‘:˜}Ð<Ó=‰ˆð —)‘)˜q‘.ˆØ�lˆØ�lˆô �jŠj˜ ;Ô/ˆØ�hˆØ�hˆàˆxˆr    c                óÊ   € V P                   w  r#\        V4      pV^ 8  d	   W,          pV^ 8  g   W8¼  d   \        RV R24      hV P                  VR7      P	                  4       # )zMReturns a copy of row i of the matrix, as a (1 x n)
CSR matrix (row vector).
úindex (ú) out of range©Úminor)r   ÚintÚ
IndexErrorÚ_get_submatrixr#   ©r   Úir   r   s   &&  r   Ú_getrowÚ_csc_base._getrow^   sb   € ð �z‰z‰ˆÜ�‹FˆØˆqŒ5Ø�FˆAØˆqŒ5�A”FÜ˜w q c¨Ð8Ó9Ð9Ø×"Ñ"¨Ð"Ó+×1Ñ1Ó3Ð3r    c                ó°   € V P                   w  r#\        V4      pV^ 8  d	   W,          pV^ 8  g   W8¼  d   \        RV R24      hV P                  VRR7      # )zSReturns a copy of column i of the matrix, as a (m x 1)
CSC matrix (column vector).
rH   rI   T)Úmajorr   )r   rL   rM   rN   rO   s   &&  r   Ú_getcolÚ_csc_base._getcolj   s[   € ð �z‰z‰ˆÜ�‹FˆØˆqŒ5Ø�FˆAØˆqŒ5�A”FÜ˜w q c¨Ð8Ó9Ð9Ø×"Ñ"¨°Ð"Ó6Ð6r    c                óD   € V P                  V4      P                  VR 7      # )rJ   )Ú_major_index_fancyrN   ©r   rA   rB   s   &&&r   Ú_get_intXarrayÚ_csc_base._get_intXarrayv   s!   € Ø×&Ñ& sÓ+×:Ñ:ÀÐ:ÓEÐEr    c                óŒ   € VP                   R9   d   V P                  W!RR7      # V P                  V4      P                  VR7      # )r   T©rT   rK   r   rJ   ©r   N)ÚsteprN   Ú_major_slicerY   s   &&&r   Ú_get_intXsliceÚ_csc_base._get_intXslicey   sC   € Ø�8‰8�yÔ Ø×&Ñ&¨SÀ$Ð&ÓGÐGØ× Ñ  Ó%×4Ñ4¸3Ð4Ó?Ð?r    c                óŒ   € VP                   R9   d   V P                  W!RR7      # V P                  VR7      P                  V4      # )r   Tr]   ©rT   r^   )r_   rN   Ú_minor_slicerY   s   &&&r   Ú_get_sliceXintÚ_csc_base._get_sliceXint~   sC   € Ø�8‰8�yÔ Ø×&Ñ&¨SÀ$Ð&ÓGÐGØ×"Ñ"¨Ð"Ó-×:Ñ:¸3Ó?Ð?r    c                óB   € V P                  V4      P                  V4      # r"   )rX   re   rY   s   &&&r   Ú_get_sliceXarrayÚ_csc_base._get_sliceXarrayƒ   s   € Ø×&Ñ& sÓ+×8Ñ8¸Ó=Ð=r    c                ó    € V P                  VR 7      P                  V4      pVP                  ^8”  d   VP                  VP                  4      # V# )rd   )rN   Ú_minor_index_fancyÚndimÚreshaper   )r   rA   rB   Úress   &&& r   Ú_get_arrayXintÚ_csc_base._get_arrayXint†   sC   € Ø×!Ñ!¨Ð!Ó,×?Ñ?ÀÓDˆØ�8‰8�aŒ<Ø—;‘;˜sŸy™yÓ)Ð)Øˆ
r    c                óB   € V P                  V4      P                  V4      # r"   )r`   rl   rY   s   &&&r   Ú_get_arrayXsliceÚ_csc_base._get_arrayXsliceŒ   s   € Ø× Ñ  Ó%×8Ñ8¸Ó=Ð=r    c                ó&   € V ^,          V ^ ,          3# )zBswap the members of x if this is a column-oriented matrix
        © ©Úxs   &r   r:   Ú_csc_base._swap‘   s   € ð ��t�Q�q•TˆzÐr    rv   )NF)F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú_formatr   r   Ú__doc__r$   r'   r#   rE   r
   rQ   rU   rZ   ra   rf   ri   rp   rs   Ústaticmethodr:   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r      s´   ø‡ € Ø€Gô	Eð  ×)Ñ)×1Ñ1€IÔò ôð —M‘M×)Ñ)€E„Môð. —M‘M×)Ñ)€E„Mòð. !×(Ñ(×0Ñ0€G„Oò
4ò
7òFò@ò
@ò
>òò>ð
 ñó ör    r   c                ó"   € \        V \        4      # )a0  Is `x` of csc_matrix type?

.. warning::

   SciPy sparse is shifting from a sparse matrix interface to a sparse
   array interface. In the next few releases we expect to deprecate the
   sparse matrix interface. For documentation of the matrix
   interface, see the :ref:`spmatrix interface docs <spmatrix_api>`.
   For guidance on converting existing code to sparse arrays, see
   :ref:`Migration from spmatrix to sparray <migration_to_sparray>`.

Parameters
----------
x
    object to check for being a csc matrix

Returns
-------
bool
    True if `x` is a csc matrix, False otherwise

Examples
--------
>>> from scipy.sparse import csc_array, csc_matrix, coo_matrix, isspmatrix_csc
>>> isspmatrix_csc(csc_matrix([[5]]))
True
>>> isspmatrix_csc(csc_array([[5]]))
False
>>> isspmatrix_csc(coo_matrix([[5]]))
False
)Ú
isinstancer   rw   s   &r   Úisspmatrix_cscr†   ˜   s   € ô@ �aœÓ$Ð$r    c                   ó   € ] tR t^¼tRtRtR# )r   aš  
Compressed Sparse Column array.

This can be instantiated in several ways:
    csc_array(D)
        where D is a 2-D ndarray

    csc_array(S)
        with another sparse array or matrix S (equivalent to S.tocsc())

    csc_array((M, N), [dtype])
        to construct an empty array with shape (M, N)
        dtype is optional, defaulting to dtype='d'.

    csc_array((data, (row_ind, col_ind)), [shape=(M, N)])
        where ``data``, ``row_ind`` and ``col_ind`` satisfy the
        relationship ``a[row_ind[k], col_ind[k]] = data[k]``.

    csc_array((data, indices, indptr), [shape=(M, N)])
        is the standard CSC representation where the row indices for
        column i are stored in ``indices[indptr[i]:indptr[i+1]]``
        and their corresponding values are stored in
        ``data[indptr[i]:indptr[i+1]]``.  If the shape parameter is
        not supplied, the array dimensions are inferred from
        the index arrays.

Attributes
----------
data : ndarray
    CSC format data array of the array
indices : ndarray
    CSC format index array of the array
indptr : ndarray
    CSC format index pointer array of the array
has_sorted_indices : bool
    Whether indices are sorted
has_canonical_format : bool
    Whether indices are sorted and no duplicate entries exist
dtype : dtype
    Data type of the array
shape : 2-tuple
    Shape of the array
ndim : int
    Number of dimensions (this is always 2)
format : str
    Three letter code for the format of the array storage, e.g. 'csc'
nnz : int
    Number of values stored in the array
size : int
    Number of values stored in the array
T : csc_array
    The transpose of the array
mT : csc_array
    The matrix transpose of the array

Notes
-----

Sparse arrays can be used in arithmetic operations: they support
addition, subtraction, multiplication, division, and matrix power.

Advantages of the CSC format
    - efficient arithmetic operations CSC + CSC, CSC * CSC, etc.
    - efficient column slicing
    - fast matrix vector products (CSR, BSR may be faster)

Disadvantages of the CSC format
  - slow row slicing operations (consider CSR)
  - changes to the sparsity structure are expensive (consider LIL or DOK)

Canonical format
  - Within each column, indices are sorted by row.
  - There are no duplicate entries.

Examples
--------

>>> import numpy as np
>>> from scipy.sparse import csc_array
>>> csc_array((3, 4), dtype=np.int8).toarray()
array([[0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0]], dtype=int8)

>>> row = np.array([0, 2, 2, 0, 1, 2])
>>> col = np.array([0, 0, 1, 2, 2, 2])
>>> data = np.array([1, 2, 3, 4, 5, 6])
>>> csc_array((data, (row, col)), shape=(3, 3)).toarray()
array([[1, 0, 4],
       [0, 0, 5],
       [2, 3, 6]])

>>> indptr = np.array([0, 2, 3, 6])
>>> indices = np.array([0, 2, 2, 0, 1, 2])
>>> data = np.array([1, 2, 3, 4, 5, 6])
>>> csc_array((data, indices, indptr), shape=(3, 3)).toarray()
array([[1, 0, 4],
       [0, 0, 5],
       [2, 3, 6]])

rv   N©rz   r{   r|   r}   r   r�   rv   r    r   r   r   ¼   s   † õdr    c                   ó   € ] tR tRtRtRtR# )r   i$  aL  
Compressed Sparse Column matrix.

.. warning::

   SciPy sparse is shifting from a sparse matrix interface to a sparse
   array interface. In the next few releases we expect to deprecate the
   sparse matrix interface. For documentation of the matrix
   interface, see the :ref:`spmatrix interface docs <spmatrix_api>`.
   For guidance on converting existing code to sparse arrays, see
   :ref:`Migration from spmatrix to sparray <migration_to_sparray>`.

This can be instantiated in several ways:
    csc_matrix(D)
        where D is a 2-D ndarray

    csc_matrix(S)
        with another sparse array or matrix S (equivalent to S.tocsc())

    csc_matrix((M, N), [dtype])
        to construct an empty matrix with shape (M, N)
        dtype is optional, defaulting to dtype='d'.

    csc_matrix((data, (row_ind, col_ind)), [shape=(M, N)])
        where ``data``, ``row_ind`` and ``col_ind`` satisfy the
        relationship ``a[row_ind[k], col_ind[k]] = data[k]``.

    csc_matrix((data, indices, indptr), [shape=(M, N)])
        is the standard CSC representation where the row indices for
        column i are stored in ``indices[indptr[i]:indptr[i+1]]``
        and their corresponding values are stored in
        ``data[indptr[i]:indptr[i+1]]``.  If the shape parameter is
        not supplied, the matrix dimensions are inferred from
        the index arrays.

Attributes
----------
data : ndarray
    CSC format data array of the matrix
indices : ndarray
    CSC format index array of the matrix
indptr : ndarray
    CSC format index pointer array of the matrix
has_sorted_indices : bool
    Whether indices are sorted
has_canonical_format : bool
    Whether indices are sorted and no duplicate entries exist
dtype : dtype
    Data type of the matrix
shape : 2-tuple
    Shape of the matrix
ndim : int
    Number of dimensions (this is always 2)
format : str
    Three letter code for the format of the matrix storage, e.g. 'csc'
nnz : int
    Number of values stored in the matrix
size : int
    Number of values stored in the matrix
T : csc_matrix
    The transpose of the matrix
mT : csc_matrix
    The matrix transpose

Notes
-----

Sparse matrices can be used in arithmetic operations: they support
addition, subtraction, multiplication, division, and matrix power.

Advantages of the CSC format
    - efficient arithmetic operations CSC + CSC, CSC * CSC, etc.
    - efficient column slicing
    - fast matrix vector products (CSR, BSR may be faster)

Disadvantages of the CSC format
  - slow row slicing operations (consider CSR)
  - changes to the sparsity structure are expensive (consider LIL or DOK)

Canonical format
  - Within each column, indices are sorted by row.
  - There are no duplicate entries.

Examples
--------

>>> import numpy as np
>>> from scipy.sparse import csc_matrix
>>> csc_matrix((3, 4), dtype=np.int8).toarray()
array([[0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0]], dtype=int8)

>>> row = np.array([0, 2, 2, 0, 1, 2])
>>> col = np.array([0, 0, 1, 2, 2, 2])
>>> data = np.array([1, 2, 3, 4, 5, 6])
>>> csc_matrix((data, (row, col)), shape=(3, 3)).toarray()
array([[1, 0, 4],
       [0, 0, 5],
       [2, 3, 6]])

>>> indptr = np.array([0, 2, 3, 6])
>>> indices = np.array([0, 2, 2, 0, 1, 2])
>>> data = np.array([1, 2, 3, 4, 5, 6])
>>> csc_matrix((data, indices, indptr), shape=(3, 3)).toarray()
array([[1, 0, 4],
       [0, 0, 5],
       [2, 3, 6]])

rv   Nrˆ   rv   r    r   r   r   $  s   † õmr    )r   r   r†   )r   Ú__docformat__Ú__all__Únumpyr0   Ú_matrixr   Ú_baser   r   Ú_sparsetoolsr   r   Ú_sputilsr	   Ú_compressedr
   r   r†   r   r   rv   r    r   Ú<module>r’      s\   ðÙ ,Ø%€â
7€ó å ß #ß .Ý å #ôD�
ô DòN %ôHe�	˜7ô eôPn�˜9ö nr    