+
    nDj2                         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   &&&  K/data/cameron/venvs/s3viz/lib/python3.14/site-packages/scipy/sparse/_csc.py	transpose_csc_base.transpose   si     L M M zz""DIIt||$(KK$134&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    99;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   jj))4;;*E+.txx+; * =	!a%y1((48895xxtzz(:;!++$$YU$;,,%%ie%<))	 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    
  $zz$**5	]!34<<;M;MN)[[-8::}<= ))q.ll jj;/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     zzFq5FAq5AFwqc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[     zzFq5FAq5AFwqc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    88y &&S$&GG  %443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    88y &&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88a<;;syy))
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     tQqTz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1I  MM))EM. MM))EM. !((00GO
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    