§
    ¡éUg-ß  ã                   ó  — d Z g ZddlmZ ddlZddlZddlmZm	Z	 ddl
mZmZmZmZ ddlmZmZ ddlmZ dd	lmZmZmZmZmZmZmZmZ dd
lmZ ddlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*  G d„ deee¦  «        Z+dd„Z,d„ Z-dS )z>Base class for sparse matrix formats using compressed storage.é    )ÚwarnN)Ú_prune_arrayÚcopy_if_neededé   )Ú_spbaseÚissparseÚsparrayÚSparseEfficiencyWarning)Ú_data_matrixÚ_minmax_mixin)Ú_sparsetools)Úget_csr_submatrixÚcsr_sample_offsetsÚcsr_todenseÚcsr_sample_valuesÚcsr_row_indexÚcsr_row_sliceÚcsr_column_index1Úcsr_column_index2)Ú
IndexMixin)ÚupcastÚupcast_charÚ	to_nativeÚisdenseÚisshapeÚgetdtypeÚisscalarlikeÚ	isintlikeÚdowncast_intp_indexÚget_sum_dtypeÚcheck_shapeÚis_pydata_spmatrixc                   ó  — e Zd ZdZdCd„ZdDd„Zej        j        e_        dEd„Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdFd„Zej        j        e_        d„ Zd„ Zej        j        e_        d„ Zej        j        e_        dGd„Zej        j        e_        dDd„Zd„ Zd„ Zd „ Zd!„ Z d"„ Z!d#„ Z"dHd$„Z#d%„ Z$dHd&„Z%dCd'„Z&d(„ Z'd)„ Z(d*„ Z)d+„ Z*d,„ Z+d-„ Z,d.„ Z-d/„ Z.d0„ Z/d1„ Z0dEd2„Z1ej1        j        e1_        dId3„Z2ej2        j        e2_        d4„ Z3e4d5e5fd6„¦   «         Z6e6j7        d7e5fd8„¦   «         Z6d9„ Z8e4d5e5fd:„¦   «         Z9e9j7        d7e5fd;„¦   «         Z9d<„ Z:d=„ Z;d>„ Z<d?„ Z=ej=        j        e=_        dEd@„Z>dA„ Z?dB„ Z@dS )JÚ
_cs_matrixzY
    base array/matrix class for compressed row- and column-oriented arrays/matrices
    NFc                 ó	  — t          j        | |¦  «         t          | t          ¦  «        }t	          |¦  «        rv|j        | j        k    r|r|                     ¦   «         }n|                     | j        ¦  «        }|j        |j	        |j
        |j        f\  | _        | _	        | _
        | _        �nþt          |t          ¦  «        �rt          ||¬¦  «        rÃt          ||¬¦  «        | _        |                      | j        ¦  «        \  }}|                      t%          | j        ¦  «        ¬¦  «        }t)          j        dt-          |t.          ¬¦  «        ¦  «        | _
        t)          j        d|¦  «        | _	        t)          j        |dz   |¬¦  «        | _        �nt1          |¦  «        dk    rc|                      |||¬¦  «        }	|	                     | j        ¦  «        }
|
\  | _        | _	        | _
        | _        |                      ¦   «          �nžt1          |¦  «        d	k    r•|\  }}}d }|�d|vrt%          |¦  «        }|                      ||f|d
¬¦  «        }|st8          }t)          j        |||¬¦  «        | _	        t)          j        |||¬¦  «        | _        t)          j        |||¬¦  «        | _
        nöt=          d| j        j         › d|› �¦  «        ‚	 t)          j!        |¦  «        }n2# tD          $ r%}t=          d| j        j         › d|› �¦  «        |‚d }~ww xY wt          | t          ¦  «        r.|j#        dk     r#| j        dk    rt=          d|j#        › d�¦  «        ‚|                      ||¬¦  «        }	|	                     | j        ¦  «        }
|
\  | _        | _	        | _
        | _        |�t          ||¬¦  «        | _        n‰| j        €‚	 t1          | j        ¦  «        dz
  }| j	                             ¦   «         dz   }n"# tD          $ r}t=          d¦  «        |‚d }~ww xY wt          |                      ||f¦  «        |¬¦  «        | _        |�!| j
         $                    |d¬¦  «        | _
        |  %                    d¬¦  «         d S )N©Úallow_1d©Úmaxvalr   )Údefaultr   ©Údtypeé   ©Úshaper,   é   T)r)   Úcheck_contents©Úcopyr,   zunrecognized z constructor input: ÚcsczCSC arrays don't support zD input. Use 2Dz!unable to infer matrix dimensionsF©r3   ©Ú
full_check)&r   Ú__init__Ú
isinstancer	   r   Úformatr3   ÚasformatÚindptrÚindicesÚdataÚ_shapeÚtupler   r!   Ú_swapÚ_shape_as_2dÚ_get_index_dtypeÚmaxr/   ÚnpÚzerosr   ÚfloatÚlenÚ_coo_containerÚ_coo_to_compressedÚsum_duplicatesr   ÚarrayÚ
ValueErrorÚ	__class__Ú__name__ÚasarrayÚ	ExceptionÚndimÚastypeÚcheck_format)ÚselfÚarg1r/   r,   r3   Úis_arrayÚMÚNÚ	idx_dtypeÚcooÚarraysr>   r=   r<   r)   ÚeÚmajor_dÚminor_ds                     úW/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/sparse/_compressed.pyr8   z_cs_matrix.__init__   s¸  € ÝÔ˜d DÑ)Ô)Ð)Ý˜d¥GÑ,Ô,ˆå�D‰>Œ>ð ?	GØŒ{˜dœkÒ)Ð)¨dÐ)Ø—y’y‘{”{��à—}’} T¤[Ñ1Ô1�à”˜Tœ\¨4¬9°d´kðAÑ=ˆDŒK˜œ t¤y°$´+±+õ ˜�eÑ$Ô$ñ 6	GÝ�t hÐ/Ñ/Ô/ð &Cõ *¨$¸ÐBÑBÔB�”Ø—z’z $Ô"3Ñ4Ô4‘��1ð !×1Ò1½¸T¼Z¹¼Ð1ÑIÔI�	ÝœH Q­°ÅÐ(FÑ(FÔ(FÑGÔG�”	Ý!œx¨¨9Ñ5Ô5�”Ý œh q¨1¡u°IÐ>Ñ>Ô>�”‘å�t‘9”9 ’>�>à×-Ò-¨d¸%ÀuÐ-ÑMÔM�CØ ×3Ò3°D´JÑ?Ô?�FØHNÑE�D”K ¤¨t¬y¸$¼+Ø×'Ò'Ñ)Ô)Ð)Ñ)Ý˜‘Y”Y !’^�^à.2Ñ+�T˜7 Fð "�FØÐ(¨Q°e¨^¨^Ý!$ U¡¤˜Ø $× 5Ò 5°wÀÐ6GØ7=Ø?Cð !6ñ !Eô !E�Ið  ð .Ý-˜Ý#%¤8¨G¸$ÀiÐ#PÑ#PÔ#P�D”LÝ"$¤(¨6¸ÀIÐ"NÑ"NÔ"N�D”KÝ "¤¨°DÀÐ FÑ FÔ F�D”I�Iå$ð &B°T´^Ô5Lð &Bð &BØ;?ð&Bð &Bñ Cô Cð Cð
FÝ”z $Ñ'Ô'��øÝð Fð Fð FÝ ð ">°´Ô1Hð ">ð ">Ø7;ð">ð ">ñ ?ô ?ØDEðFøøøøðFøøøõ ˜$¥Ñ(Ô(ð ¨T¬Y¸ª]¨]¸t¼{ÈeÒ?SÐ?SÝ ØJ°´	ÐJÐJÐJñô ð ð ×%Ò% d°%Ð%Ñ8Ô8ˆCØ×+Ò+¨D¬JÑ7Ô7ˆFØ@FÑ=ˆDŒK˜œ t¤y°$´+ð ÐÝ% e°hÐ?Ñ?Ô?ˆDŒKˆKØŒZÐðMÝ˜dœkÑ*Ô*¨QÑ.�Øœ,×*Ò*Ñ,Ô,¨qÑ0��øÝð Mð Mð MÝ Ð!DÑEÔEÈ1ÐLøøøøðMøøøõ & d§j¢j°'¸7Ð1CÑ&DÔ&DÈxÐXÑXÔXˆDŒKàÐØœ	×(Ò(¨°UÐ(Ñ;Ô;ˆDŒIà×Ò UÐÑ+Ô+Ð+Ð+Ð+s0   ËK- Ë-
LË7 LÌLÏ3P Ð
P"ÐPÐP"c                 óì  — |€t          | j        d         ¦  «        S | j        dk    r-|dv rt          | j        d         ¦  «        S t          d¦  «        ‚|dk     r|dz  }|                      |d|z
  f¦  «        \  }}|                      | j        ¦  «        \  }}|dk    r(t          j        t          | j	        ¦  «        |¬¦  «        S |dk    rt          j
        | j        ¦  «        S t          d¦  «        ‚)Néÿÿÿÿr   )r   rb   zaxis out of boundsr   r-   )Ú	minlength)Úintr<   rR   rM   rA   r/   rE   Úbincountr   r=   Údiff)rU   ÚaxisÚ_rY   s       r`   Ú_getnnzz_cs_matrix._getnnzr   sõ   € Øˆ<Ý�t”{ 2”Ñ'Ô'Ð'ØŒY˜!Š^ˆ^Ø�wˆˆÝ˜4œ; rœ?Ñ+Ô+Ð+ÝÐ1Ñ2Ô2Ð2à�aŠxˆxØ˜‘	�Ø—j’j $¨¨D©Ð!1Ñ2Ô2‰GˆD�!Ø—:’:˜dœjÑ)Ô)‰DˆAˆqØ�qŠyˆyÝ”{Õ#6°t´|Ñ#DÔ#DØ-.ð0ñ 0ô 0ð 0à˜’�Ý”w˜tœ{Ñ+Ô+Ð+ÝÐ1Ñ2Ô2Ð2ó    Tc                 ó¨  — | j         j        j        dk    r$t          d| j         j        j        › d�d¬¦  «         | j        j        j        dk    r$t          d| j        j        j        › d�d¬¦  «         | j        j        | j        j        | j         j        fD ]}|dk    rt          d¦  «        ‚Œ|  	                    | j
        ¦  «        \  }}t          | j         ¦  «        |dz   k    r*t          d	t          | j         ¦  «        › d
|dz   › �¦  «        ‚| j         d         dk    rt          d¦  «        ‚t          | j        ¦  «        t          | j        ¦  «        k    rt          d¦  «        ‚| j         d         t          | j        ¦  «        k    rt          d¦  «        ‚|                      ¦   «          |�r | j        dk    r™| j                             ¦   «         |k    rt          d|› �¦  «        ‚| j                             ¦   «         dk     rt          d¦  «        ‚t!          j        | j         ¦  «                             ¦   «         dk     rt          d¦  «        ‚|                      | j         | j        f¦  «        }t!          j        | j         |¬¦  «        | _         t!          j        | j        |¬¦  «        | _        t)          | j        ¦  «        | _        dS dS )aÎ  Check whether the array/matrix respects the CSR or CSC format.

        Parameters
        ----------
        full_check : bool, optional
            If `True`, run rigorous check, scanning arrays for valid values.
            Note that activating those check might copy arrays for casting,
            modifying indices and index pointers' inplace.
            If `False`, run basic checks on attributes. O(1) operations.
            Default is `True`.
        Úiz$indptr array has non-integer dtype (ú)r0   ©Ú
stacklevelz%indices array has non-integer dtype (r   z'data, indices, and indptr should be 1-Dzindex pointer size z should be r   z!index pointer should start with 0z*indices and data should have the same sizerb   zQLast value of index pointer should be less than the size of index and data arrayszindices must be < zindices must be >= 0z(indptr must be a non-decreasing sequencer+   N)r<   r,   Úkindr   Únamer=   r>   rR   rM   rA   rB   rH   ÚpruneÚnnzrD   ÚminrE   rf   rC   rP   r   )rU   r7   ÚxrX   rY   rZ   s         r`   rT   z_cs_matrix.check_format‡   sÍ  € ð Œ;ÔÔ! SÒ(Ð(ÝÐQ¸¼Ô8IÔ8NÐQÐQÐQØðñ ô ð àŒ<ÔÔ" cÒ)Ð)ÝÐS¸¼Ô9KÔ9PÐSÐSÐSØðñ ô ð ð ”)”. $¤,Ô"3°T´[Ô5EÐFð 	Lð 	LˆAØ�AŠvˆvÝ Ð!JÑKÔKÐKð ð �zŠz˜$Ô+Ñ,Ô,‰ˆˆ1å�”ÑÔ  A¡Ò%Ð%ÝÐWµ3°t´{Ñ3CÔ3CÐWÐWÐPQÐTUÑPUÐWÐWÑXÔXÐXØŒK˜ŒN˜aÒÐÝÐ@ÑAÔAÐAõ �”ÑÔ¥ T¤Y¡¤Ò/Ð/ÝÐIÑJÔJÐJØŒK˜ŒO�c $¤,Ñ/Ô/Ò/Ð/Ýð Añ Bô Bð Bð 	�
Š
‰Œˆàñ 	-àŒx˜!Š|ˆ|Ø”<×#Ò#Ñ%Ô%¨Ò*Ð*Ý$Ð%=¸!Ð%=Ð%=Ñ>Ô>Ð>Ø”<×#Ò#Ñ%Ô%¨Ò)Ð)Ý$Ð%;Ñ<Ô<Ð<Ý”7˜4œ;Ñ'Ô'×+Ò+Ñ-Ô-°Ò1Ð1Ý$Ð%OÑPÔPÐPà×-Ò-¨t¬{¸D¼LÐ.IÑJÔJˆIÝœ* T¤[¸	ÐBÑBÔBˆDŒKÝœ: d¤l¸)ÐDÑDÔDˆDŒLÝ! $¤)Ñ,Ô,ˆDŒIˆIˆIð	-ð 	-rj   c                 ó¢   — |                       ¦   «          |                       || j        |¦  «        d¬¦  «        }|                     ¦   «          |S )z�Scalar version of self._binopt, for cases in which no new nonzeros
        are added. Produces a new sparse array in canonical form.
        Tr5   )rK   Ú
_with_datar>   Úeliminate_zeros)rU   ÚotherÚopÚress       r`   Ú_scalar_binoptz_cs_matrix._scalar_binoptÊ   sP   € ð 	×ÒÑÔÐØ�oŠo˜b˜b ¤¨EÑ2Ô2¸ˆoÑ>Ô>ˆØ×ÒÑÔÐØˆ
rj   c                 óº  — t          |¦  «        rÔt          j        |¦  «        r&|                      | j        t          j        ¬¦  «        S |dk    rtt          dt          d¬¦  «         |                      t          j        | j        t          j        ¬¦  «        ¦  «        }|  	                    |t          j        ¦  «        }||z
  S |  	                    |t          j        ¦  «        S t          |¦  «        r|                      ¦   «         |k    S t          |¦  «        rt           S t#          |¦  «        r¦t          dt          d¬¦  «         | j        |j        k    rdS | j        |j        k    r|                     | j        ¦  «        }|                      |d¦  «        }|                      t          j        | j        t          j        ¬¦  «        ¦  «        }||z
  S t           S )	Nr+   r   zOComparing a sparse matrix with 0 using == is inefficient, try using != instead.r0   rn   zHComparing sparse matrices using == is inefficient, try using != instead.FÚ_ne_)r   rE   ÚisnanrN   r/   Úbool_r   r
   Úonesr|   ÚoperatorÚneÚeqr   Útodenser"   ÚNotImplementedr   r:   r;   Ú_binopt)rU   ry   Úall_trueÚinvr{   s        r`   Ú__eq__z_cs_matrix.__eq__Ó   s°  € å˜ÑÔð  	"ÝŒx˜‰Œð BØ—~’~ d¤j½¼�~ÑAÔAÐAà˜ŠzˆzÝð /Ý0GØ !ð#ñ #ô #ð #ð  Ÿ>š>­"¬'°$´*ÅBÄHÐ*MÑ*MÔ*MÑNÔN�Ø×)Ò)¨%µ´Ñ=Ô=�Ø #‘~Ð%à×*Ò*¨5µ(´+Ñ>Ô>Ð>å�U‰^Œ^ð 	"Ø—<’<‘>”> UÒ*Ð*å Ñ&Ô&ð 	"Ý!Ð!å�e‰_Œ_ð 	"Ýð  Ý!8ÀQðHñ Hô Hð Hð Œz˜Uœ[Ò(Ð(Ø�uØ” ¤Ò,Ð,ØŸš t¤{Ñ3Ô3�Ø—,’,˜u fÑ-Ô-ˆCØ—~’~¥b¤g¨d¬jÅÄÐ&IÑ&IÔ&IÑJÔJˆHØ˜c‘>Ð!å!Ð!rj   c                 óh  — t          |¦  «        rÿt          j        |¦  «        rQt          dt          d¬¦  «         |                      t          j        | j        t          j        ¬¦  «        ¦  «        }|S |dk    rtt          dt          d¬¦  «         |                      t          j        | j        ¦  «        t          j        ¬¦  «        }|  	                    |t          j        ¦  «        }||z
  S |  	                    |t          j        ¦  «        S t          |¦  «        r|                      ¦   «         |k    S t          |¦  «        rt           S t#          |¦  «        rR| j        |j        k    rdS | j        |j        k    r|                     | j        ¦  «        }|                      |d¦  «        S t           S )	Nz:Comparing a sparse matrix with nan using != is inefficientr0   rn   r+   r   z^Comparing a sparse matrix with a nonzero scalar using != is inefficient, try using == instead.Tr~   )r   rE   r   r   r
   rN   r�   r/   r€   r|   r‚   r„   rƒ   r   r…   r"   r†   r   r:   r;   r‡   )rU   ry   rˆ   r‰   s       r`   Ú__ne__z_cs_matrix.__ne__÷   s�  € å˜ÑÔð 	"ÝŒx˜‰Œð ?Ýð $Ý%<ÈðLñ Lô Lð LàŸ>š>­"¬'°$´*ÅBÄHÐ*MÑ*MÔ*MÑNÔN�Ø�Ø˜!’�Ýð >å,¸ð<ñ <ô <ð <ð  Ÿ>š>­"¬'°$´*Ñ*=Ô*=ÅRÄX˜>ÑNÔN�Ø×)Ò)¨%µ´Ñ=Ô=�Ø #‘~Ð%à×*Ò*¨5µ(´+Ñ>Ô>Ð>å�U‰^Œ^ð 	"Ø—<’<‘>”> UÒ*Ð*å Ñ&Ô&ð 	"Ý!Ð!å�e‰_Œ_ð 	"àŒz˜Uœ[Ò(Ð(Ø�tØ” ¤Ò,Ð,ØŸš t¤{Ñ3Ô3�Ø—<’<  vÑ.Ô.Ð.å!Ð!rj   c                 óÎ  — t          |¦  «        r¿d|k    r|dv rt          d¦  «        ‚ |d|¦  «        r„t          |t          d¬¦  «         t	          j        | j        t	          j        |¦  «        ¬¦  «        }|                     |¦  «         |  	                    |¦  «        }|  
                    ||¦  «        S |                      ||¦  «        S t          |¦  «        r ||                      ¦   «         |¦  «        S t          |¦  «        rÕ| j        |j        k    rt          d¦  «        ‚| j        |j        k    r|                     | j        ¦  «        }|dvr|  
                    ||¦  «        S t          d	t          d¬¦  «         |  	                    t	          j        | j        t          j        ¬¦  «        ¦  «        }|  
                    ||d
k    rdnd¦  «        }||z
  S t(          S )Nr   )Ú_le_Ú_ge_z >= and <= don't work with 0.r0   rn   r+   úinconsistent shapes)r�   rŽ   zUComparing sparse matrices using >= and <= is inefficient, using <, >, or !=, instead.rŽ   Ú_gt_Ú_lt_)r   ÚNotImplementedErrorr   r
   rE   Úemptyr/   Úresult_typeÚfillrN   r‡   r|   r   r…   r   rM   r:   r;   r�   r€   r†   )rU   ry   rz   Úop_nameÚbad_scalar_msgÚ	other_arrrˆ   r{   s           r`   Ú_inequalityz_cs_matrix._inequality  sØ  € å˜ÑÔð 	"Ø�EŠzˆz˜gÐ)9Ð9Ð9Ý)Ð*IÑJÔJÐJØ��A�u‘”ð 6Ý�^Õ%<ÈÐKÑKÔKÐKÝœH T¤Zµr´~ÀeÑ7LÔ7LÐMÑMÔM�	Ø—’˜uÑ%Ô%Ð%Ø ŸNšN¨9Ñ5Ô5�	Ø—|’| I¨wÑ7Ô7Ð7à×*Ò*¨5°"Ñ5Ô5Ð5å�U‰^Œ^ð 	"Ø�2�d—l’l‘n”n eÑ,Ô,Ð,å�e‰_Œ_ð 	"àŒz˜Uœ[Ò(Ð(Ý Ð!6Ñ7Ô7Ð7Ø” ¤Ò,Ð,ØŸš t¤{Ñ3Ô3�ØÐ.Ð.Ð.Ø—|’| E¨7Ñ3Ô3Ð3åð /å(°Qð8ñ 8ô 8ð 8ð —~’~¥b¤g¨d¬jÅÄÐ&IÑ&IÔ&IÑJÔJˆHØ—,’,˜u°¸6Ò0AÐ0A f fÀvÑNÔNˆCØ˜c‘>Ð!å!Ð!rj   c                 óF   — |                       |t          j        dd¦  «        S )Nr’   zgComparing a sparse matrix with a scalar greater than zero using < is inefficient, try using >= instead.)rš   r‚   Últ©rU   ry   s     r`   Ú__lt__z_cs_matrix.__lt__<  ó'   € Ø×Ò ¥x¤{°Fð!8ñ9ô 9ð 	9rj   c                 óF   — |                       |t          j        dd¦  «        S )Nr‘   zdComparing a sparse matrix with a scalar less than zero using > is inefficient, try using <= instead.)rš   r‚   Úgtr�   s     r`   Ú__gt__z_cs_matrix.__gt__B  rŸ   rj   c                 óF   — |                       |t          j        dd¦  «        S )NrŽ   zgComparing a sparse matrix with a scalar greater than zero using <= is inefficient, try using > instead.)rš   r‚   Úler�   s     r`   Ú__le__z_cs_matrix.__le__H  ó'   € Ø×Ò ¥x¤{°Fð!7ñ8ô 8ð 	8rj   c                 óF   — |                       |t          j        dd¦  «        S )Nr�   zdComparing a sparse matrix with a scalar less than zero using >= is inefficient, try using < instead.)rš   r‚   Úger�   s     r`   Ú__ge__z_cs_matrix.__ge__N  r¦   rj   c                 óè  — |j         | j         k    r t          d| j         › d|j         › d�¦  «        ‚t          | j        j        |j        j        ¦  «        }|                      d¦  «        d         }t          j        |||d¬¦  «        }|j        j	        r|n|j
        }|                      | j        ¦  «        \  }}t          ||| j        | j        | j        |¦  «         |                      |d¬	¦  «        S )
NzIncompatible shapes (z and rm   ÚCFr   T)r,   Úorderr3   Fr5   )r/   rM   r   r,   ÚcharrA   rE   rL   ÚflagsÚc_contiguousÚTrB   r   r<   r=   r>   Ú
_container)rU   ry   r,   r¬   ÚresultÚyrX   rY   s           r`   Ú
_add_densez_cs_matrix._add_denseX  sÞ   € ØŒ;˜$œ*Ò$Ð$ÝÐT°T´ZÐTÐTÀeÄkÐTÐTÐTÑUÔUÐUÝ˜DœJœO¨U¬[Ô-=Ñ>Ô>ˆØ—
’
˜4Ñ Ô  Ô#ˆÝ”˜% u°EÀÐEÑEÔEˆØ”lÔ/Ð=ˆFˆF°V´XˆØ�zŠz˜$Ô+Ñ,Ô,‰ˆˆ1Ý�A�q˜$œ+ t¤|°T´YÀÑBÔBÐBØ�Š˜v¨EˆÑ2Ô2Ð2rj   c                 ó.   — |                       |d¦  «        S )NÚ_plus_©r‡   r�   s     r`   Ú_add_sparsez_cs_matrix._add_sparsec  s   € Ø�|Š|˜E 8Ñ,Ô,Ð,rj   c                 ó.   — |                       |d¦  «        S )NÚ_minus_r·   r�   s     r`   Ú_sub_sparsez_cs_matrix._sub_sparsef  s   € Ø�|Š|˜E 9Ñ-Ô-Ð-rj   c                 ó<  — t          |¦  «        r|                      |¦  «        S t          |¦  «        �rM| j        |j        k    r+|                      |¦  «        }|                      |d¦  «        S |j        dk    r\|                      |                     ¦   «         d         ¦  «        }| j        dk    r"|                     d| j        d         f¦  «        S |S |j        dk    r-|                      |                     ¦   «         d         ¦  «        S | j        dv r,|                     | j	         
                    ¦   «         ¦  «        S | j        \  }}|j        \  }}|dk    rA|dk    r;|                     |                      ||¦  «                             ¦   «         ¦  «        S |dk    rA|dk    r;|                      |                     ||¦  «                             ¦   «         ¦  «        S t          | t          ¦  «        }|dk    rs||k    rmt!          |                     ¦   «                              ¦   «         |¦  «        }|                      |¦  «        }| j        dk    r|n|                     d|f¦  «        S |dk    rO||k    rIt!          |                      ¦   «                              ¦   «         |¦  «        }	|                     |	¦  «        S |dk    rO||k    rIt!          |                     ¦   «                              ¦   «         |¦  «        }|                     | ¦  «        S |dk    rO||k    rIt!          |                      ¦   «                              ¦   «         |¦  «        }
|
                     |¦  «        S t%          d	¦  «        ‚t'          j        |¦  «        }|j        dk    r't'          j        |                      ¦   «         |¦  «        S |j        dk    rn|j        t&          j        k    rt2          S t'          j        | j        |j        ¦  «        }|                      |j        d         ¦  «                             |¦  «        S | j        dv r^t'          j        | j        |j        ¦  «        }t'          j        | j	         
                    ¦   «         |¦  «                             |¦  «        S |                      ¦   «         }| j        |j        k    r]t'          j        |j	        ||j                 ¦  «        }|                     t&          j        ¦  «                             ¦   «         |_	        |S t'          j         |¦  «        }| j        d         dk    s| j        dk    �r@|j        d         dk    rt'          j        |j	        |¦  «        }nU|j        d         | j        d
         k    r*t'          j        |j	        |dd…|j!        f         ¦  «        }nt%          d	¦  «        ‚t'          j"        t'          j#        |j        d         ¦  «        |j$        ¦  «        }t'          j%        |j!        |j        d         ¦  «        }|  &                    |                     t&          j        ¦  «                             ¦   «         ||ff|j        d         | j        d
         fd¬¦  «        S | j        d         dk    �r]|j        d         dk    r%t'          j        |j	        dd…df         |¦  «        }n[|j        d         | j        d         k    r0t'          j        |j	        dd…df         ||j'                 ¦  «        }nt%          d	¦  «        ‚t'          j"        |j'        |j        d         ¦  «        }t'          j%        t'          j#        |j        d         ¦  «        tQ          |j!        ¦  «        ¦  «        }|  &                    |                     t&          j        ¦  «                             ¦   «         ||ff| j        d         |j        d         fd¬¦  «        S |j        d         dk    rX| j        d         |j        d         k    r<t'          j        |j	        |dd…|j!        f                              ¦   «         ¦  «        }nt|j        d         dk    rT| j        d         |j        d         k    r8t'          j        |j	        ||j'                                      ¦   «         ¦  «        }nt%          d	¦  «        ‚|                     t&          j        ¦  «                             ¦   «         |_	        |S )z=Point-wise multiplication by array/matrix, vector, or scalar.Ú_elmul_©r   r   )r   r   r   r   ©r   )r¿   r¾   r-   r�   rb   NF©r/   r3   ))r   Ú_mul_scalarr   r/   rN   r‡   ÚtoarrayrR   Úreshaper>   ÚsumrB   Ú_matmul_sparseÚtocscr9   r	   Ú_make_diagonal_csrÚravelrM   rE   Ú
asanyarrayÚmultiplyÚsizer,   Úobject_r†   Úbroadcast_shapesÚflatÚtocooÚcoordsÚviewÚndarrayÚ
atleast_2dÚcolÚrepeatÚarangers   ÚtilerI   ÚrowrH   )rU   ry   r²   ÚsMÚsNÚoMÚoNrW   Ú	new_otherr3   Únew_selfÚbshapeÚretr>   Úother2drØ   rÔ   s                    r`   rÊ   z_cs_matrix.multiplyi  s£  € õ ˜ÑÔð 	+Ø×#Ò# EÑ*Ô*Ð*å�E‰?Œ?ñ +	4ØŒz˜Uœ[Ò(Ð(ØŸš uÑ-Ô-�Ø—|’| E¨9Ñ5Ô5Ð5àŒ{˜fÒ$Ð$Ø×)Ò)¨%¯-ª-©/¬/¸$Ô*?Ñ@Ô@�Ø”9 ’>�>Ø!Ÿ>š>¨1¨d¬j¸¬mÐ*<Ñ=Ô=Ð=Ø�ØŒ{˜dÒ"Ð"Ø×'Ò'¨¯ª©¬¸Ô(:Ñ;Ô;Ð;ØŒz˜^Ð+Ð+Ø×(Ò(¨¬¯ª©¬Ñ9Ô9Ð9ð Ô&‰FˆB�ØÔ'‰FˆB�à�QŠwˆw˜2 š7˜7Ø×+Ò+¨D¯LªL¸¸RÑ,@Ô,@×,FÒ,FÑ,HÔ,HÑIÔIÐIØ�QŠwˆw˜2 š7˜7Ø×*Ò*¨5¯=ª=¸¸RÑ+@Ô+@×+FÒ+FÑ+HÔ+HÑIÔIÐIå! $­Ñ0Ô0ˆHà�QŠwˆw˜2 š8˜8Ý.¨u¯}ª}©¬×/DÒ/DÑ/FÔ/FÈÑQÔQ�	Ø×,Ò,¨YÑ7Ô7�Ø!%¤¨a¢ �v�v°V·^²^ÀQÈÀGÑ5LÔ5LÐLà�QŠwˆw˜2 š8˜8Ý)¨$¯,ª,©.¬.×*>Ò*>Ñ*@Ô*@À(ÑKÔK�Ø×+Ò+¨DÑ1Ô1Ð1ð �QŠwˆw˜2 š8˜8Ý.¨u¯}ª}©¬×/DÒ/DÑ/FÔ/FÈÑQÔQ�	Ø ×/Ò/°Ñ5Ô5Ð5à�QŠwˆw˜2 š8˜8Ý-¨d¯lªl©n¬n×.BÒ.BÑ.DÔ.DÀhÑOÔO�Ø×.Ò.¨uÑ5Ô5Ð5ÝÐ2Ñ3Ô3Ð3õ ”˜eÑ$Ô$ˆàŒ:˜Š>ˆ>Ý”;˜tŸ|š|™~œ~¨uÑ5Ô5Ð5àŒ:˜Š?ˆ?ØŒ{�bœjÒ(Ð(å%Ð%ÝÔ(¨¬°U´[ÑAÔAˆFØ×#Ò# E¤J¨q¤MÑ2Ô2×:Ò:¸6ÑBÔBÐBàŒ:˜Ð'Ð'ÝÔ(¨¬°U´[ÑAÔAˆFÝ”;˜tœyŸ}š}™œ°Ñ6Ô6×>Ò>¸vÑFÔFÐFà�jŠj‰lŒlˆàŒ:˜œÒ$Ð$Ý”;˜sœx¨¨s¬zÔ):Ñ;Ô;ˆDØ—y’y¥¤Ñ,Ô,×2Ò2Ñ4Ô4ˆCŒHØˆJõ ”- Ñ&Ô&ˆàŒ:�aŒ=˜AÒÐ ¤¨a¢¡ØŒ}˜QÔ 1Ò$Ð$Ý”{ 3¤8¨WÑ5Ô5��Ø”˜qÔ! T¤Z°¤^Ò3Ð3Ý”{ 3¤8¨W°Q°Q°Q¸¼°ZÔ-@ÑAÔA��å Ð!6Ñ7Ô7Ð7Ý”)�BœI g¤m°AÔ&6Ñ7Ô7¸¼ÑAÔAˆCÝ”'˜#œ' 7¤=°Ô#3Ñ4Ô4ˆCØ×&Ò&Ø—’�2œ:Ñ&Ô&×,Ò,Ñ.Ô.°°c°
Ð;Ø”} QÔ'¨¬°B¬Ð8Øð 'ñ ô ð ð Œ:�aŒ=˜AÒÑØŒ}˜QÔ 1Ò$Ð$Ý”{ 3¤8¨A¨A¨A¨t¨GÔ#4°gÑ>Ô>��Ø”˜qÔ! T¤Z°¤]Ò2Ð2Ý”{ 3¤8¨A¨A¨A¨t¨GÔ#4°g¸c¼gÔ6FÑGÔG��å Ð!6Ñ7Ô7Ð7Ý”)˜CœG W¤]°1Ô%5Ñ6Ô6ˆCÝ”'�"œ) G¤M°!Ô$4Ñ5Ô5µs¸3¼7±|´|ÑDÔDˆCØ×&Ò&Ø—’�2œ:Ñ&Ô&×,Ò,Ñ.Ô.°°c°
Ð;Ø”z !”} g¤m°AÔ&6Ð7Øð 'ñ ô ð ð Œ=˜Ô˜qÒ Ð  T¤Z°¤]°g´mÀAÔ6FÒ%FÐ%FÝ”;˜sœx¨°°°°C´G°Ô)<×)BÒ)BÑ)DÔ)DÑEÔEˆDˆDàŒ]˜1Ô Ò"Ð" t¤z°!¤}¸¼ÀaÔ8HÒ'HÐ'HÝ”;˜sœx¨°´Ô)9×)?Ò)?Ñ)AÔ)AÑBÔBˆDˆDåÐ2Ñ3Ô3Ð3Ø—9’9�RœZÑ(Ô(×.Ò.Ñ0Ô0ˆŒØˆ
rj   c           	      ó*  — | j         \  }}t          j        |t          | j        j        |j        j        ¦  «        ¬¦  «        }t          t          | j        dz   ¦  «        } |||| j	        | j
        | j        ||¦  «         | j        dk    r|d         n|S )Nr+   Ú_matvecr   r   )rB   rE   rF   r   r,   r­   Úgetattrr   r:   r<   r=   r>   rR   )rU   ry   rX   rY   r²   Úfns         r`   Ú_matmul_vectorz_cs_matrix._matmul_vectorä  s‰   € ØÔ ‰ˆˆ1õ ”˜!¥;¨t¬z¬ÀÄÔ@PÑ#QÔ#QÐRÑRÔRˆõ •\ 4¤;°Ñ#:Ñ;Ô;ˆØ
ˆˆ1ˆa�”˜dœl¨D¬I°u¸fÑEÔEÐEà œI¨šN˜Nˆv�aŒyˆy°Ð6rj   c                 ó®  — | j         \  }}|j        d         }t          j        ||ft	          | j        j        |j        j        ¦  «        ¬¦  «        }t          t          | j	        dz   ¦  «        } ||||| j
        | j        | j        |                     ¦   «         |                     ¦   «         ¦  «         | j        dk    r|                     |f¦  «        S |S )Nrb   r+   Ú_matvecsr   )rB   r/   rE   rF   r   r,   r­   rä   r   r:   r<   r=   r>   rÈ   rR   rÃ   )rU   ry   rX   rY   Ún_vecsr²   rå   s          r`   Ú_matmul_multivectorz_cs_matrix._matmul_multivectorð  sÇ   € ØÔ ‰ˆˆ1Ø”˜R”ˆå”˜1˜f˜+Ý +¨D¬J¬O¸U¼[Ô=MÑ NÔ NðPñ Pô Pˆõ •\ 4¤;°Ñ#;Ñ<Ô<ˆØ
ˆˆ1ˆa�˜œ d¤l°D´IØ�;Š;‰=Œ=˜&Ÿ,š,™.œ.ñ	*ô 	*ð 	*ð Œ9˜Š>ˆ>Ø—>’> 6 )Ñ,Ô,Ð,Øˆrj   c                 óN  — | j         \  }}|j        }|dk    r'|                     d|j        d         f¦  «        j        }|j        \  }}d}| j        dk    r||fz  }|dk    r||fz  }|                      ||f¦  «        d         }|                      |¦  «        }|                      | j	        | j
        |j	        |j
        f¦  «        }	t          t          | j        dz   ¦  «        }
 |
||t          j        | j	        |	¬¦  «        t          j        | j
        |	¬¦  «        t          j        |j	        |	¬¦  «        t          j        |j
        |	¬¦  «        ¦  «        }|dk    rc|dk    r.t          j        dt#          | j        |j        ¦  «        ¬¦  «        S |                      |t#          | j        |j        ¦  «        ¬¦  «        S |                      | j	        | j
        |j	        |j
        f|¬¦  «        }	t          j        |dz   |	¬¦  «        }t          j        ||	¬¦  «        }t          j        |t#          | j        |j        ¦  «        ¬¦  «        }t          t          | j        dz   ¦  «        }
 |
||t          j        | j	        |	¬¦  «        t          j        | j
        |	¬¦  «        | j        t          j        |j	        |	¬¦  «        t          j        |j
        |	¬¦  «        |j        |||¦  «         |dk    rt          j        |d         ¦  «        S |                      |||f|¬	¦  «        S )
Nr   r   © r-   Ú_matmat_maxnnzr+   r(   Ú_matmat©r/   )rB   rR   rÃ   r/   r°   r?   rA   rN   rC   r<   r=   rä   r   r:   rE   rP   rL   r   r,   r”   r>   )rU   ry   rX   ÚK1Úo_ndimÚK2rY   Ú	new_shapeÚ	major_dimrZ   rå   rs   r<   r=   r>   s                  r`   rÅ   z_cs_matrix._matmul_sparse   sû  € ØÔ!‰ˆˆ2à”ˆØ�QŠ;ˆ;à—M’M 1 e¤k°!¤nÐ"5Ñ6Ô6Ô8ˆEØ”‰ˆˆAð ˆ	ØŒ9˜Š>ˆ>Ø˜!˜ÑˆIØ�QŠ;ˆ;Ø˜!˜ÑˆIà—J’J  1˜vÑ&Ô& qÔ)ˆ	Ø—’˜uÑ%Ô%ˆà×)Ò)¨4¬;¸¼Ø%*¤\°5´=ð+Bñ Cô Cˆ	õ •\ 4¤;Ð1AÑ#AÑBÔBˆØˆb��AÝ”˜DœK¨yÐ9Ñ9Ô9Ý”˜DœL°	Ð:Ñ:Ô:Ý”˜EœL°	Ð:Ñ:Ô:Ý”˜EœM°Ð;Ñ;Ô;ñ	=ô =ˆð
 �!Š8ˆ8Ø˜BŠˆÝ”x ­°´
¸E¼KÑ)HÔ)HÐIÑIÔIÐIØ—>’> )µ6¸$¼*ÀeÄkÑ3RÔ3R�>ÑSÔSÐSà×)Ò)¨4¬;¸¼Ø%*¤\°5´=ð+Bà+.ð *ñ 0ô 0ˆ	õ ”˜) a™-¨yÐ9Ñ9Ô9ˆÝ”(˜3 iÐ0Ñ0Ô0ˆÝŒx˜¥6¨$¬*°e´kÑ#BÔ#BÐCÑCÔCˆå•\ 4¤;°Ñ#:Ñ;Ô;ˆØ
ˆˆ1ˆa•”˜DœK¨yÐ9Ñ9Ô9ÝŒ:�d”l¨)Ð4Ñ4Ô4ØŒ9ÝŒ:�e”l¨)Ð4Ñ4Ô4ÝŒ:�e”m¨9Ð5Ñ5Ô5ØŒ:Ø�7˜Dñ	"ô 	"ð 	"ð ˜Š?ˆ?Ý”8˜D œGÑ$Ô$Ð$Ø�~Š~˜t W¨fÐ5¸Yˆ~ÑGÔGÐGrj   r   c           
      óÊ  — | j         \  }}|| k    s||k    r t          j        d| j        j        ¬¦  «        S t          t          | j        dz   ¦  «        }t          j        t          |t          |d¦  «        z   |t          |d¦  «        z
  ¦  «        t          | j        ¦  «        ¬¦  «        } ||| j         d         | j         d         | j        | j        | j        |¦  «         |S )Nr   r+   Ú	_diagonalr   )r/   rE   r”   r>   r,   rä   r   r:   rt   rD   r   r<   r=   )rU   ÚkÚrowsÚcolsrå   r³   s         r`   Údiagonalz_cs_matrix.diagonal6  sÒ   € Ø”Z‰
ˆˆdØ��Š:ˆ:˜˜dš˜Ý”8˜A T¤Y¤_Ð5Ñ5Ô5Ð5Ý•\ 4¤;°Ñ#<Ñ=Ô=ˆÝŒH•S˜¥ A q¡	¤	Ñ)¨4µ#°a¸±)´)Ñ+;Ñ<Ô<Ý! $¤*Ñ-Ô-ð/ñ /ô /ˆà
ˆˆ1ˆdŒj˜Œm˜TœZ¨œ]¨D¬K¸¼ØŒ9�añ	ô 	ð 	àˆrj   c                 óÚ  — t          |¦  «        rü ||¦  «        r‰t          dt          d¬¦  «         t          j        | j        t          j        |¦  «        j        ¬¦  «        }|                     |¦  «         |  	                    |¦  «        }|  
                    ||¦  «        S |                      ¦   «           || j        t          j        |¦  «        ¦  «        }|  	                    || j        | j        f|j        | j        ¬¦  «        }|S t          |¦  «        r ||                      ¦   «         |¦  «        S t#          |¦  «        r|  
                    ||¦  «        S t%          d¦  «        ‚)NzITaking maximum (minimum) with > 0 (< 0) number results to a dense matrix.r0   rn   r+   )r,   r/   zOperands not compatible.)r   r   r
   rE   r”   r/   rP   r,   r–   rN   r‡   rK   r>   r=   r<   r   r…   r   rM   )rU   ry   Únpopr—   Údense_checkr™   Únew_dataÚmats           r`   Ú_maximum_minimumz_cs_matrix._maximum_minimumG  s_  € Ý˜ÑÔð 	9Øˆ{˜5Ñ!Ô!ð Ýð +Ý,CØ !ð#ñ #ô #ð #õ œH T¤Zµr´zÀ%Ñ7HÔ7HÔ7NÐOÑOÔO�	Ø—’˜uÑ%Ô%Ð%Ø ŸNšN¨9Ñ5Ô5�	Ø—|’| I¨wÑ7Ô7Ð7à×#Ò#Ñ%Ô%Ð%Ø˜4 ¤	­2¬:°eÑ+<Ô+<Ñ=Ô=�Ø—n’n h°´¸d¼kÐ%JØ+3¬>ÀÄð %ñ Mô M�à�
Ý�U‰^Œ^ð 	9Ø�4˜Ÿš™œ¨Ñ.Ô.Ð.Ý�e‰_Œ_ð 	9Ø—<’<  wÑ/Ô/Ð/åÐ7Ñ8Ô8Ð8rj   c                 óH   — |                       |t          j        dd„ ¦  «        S )NÚ	_maximum_c                 ó2   — t          j        | ¦  «        dk    S ©Nr   ©rE   rP   ©ru   s    r`   ú<lambda>z$_cs_matrix.maximum.<locals>.<lambda>`  ó   € ½B¼JÀq¹M¼MÈAÒ<M€ rj   )r   rE   Úmaximumr�   s     r`   r	  z_cs_matrix.maximum^  ó,   € Ø×$Ò$ U­B¬JØ%0Ð2MÐ2MñOô Oð 	Orj   c                 óH   — |                       |t          j        dd„ ¦  «        S )NÚ	_minimum_c                 ó2   — t          j        | ¦  «        dk     S r  r  r  s    r`   r  z$_cs_matrix.minimum.<locals>.<lambda>f  r  rj   )r   rE   Úminimumr�   s     r`   r  z_cs_matrix.minimumd  r
  rj   c                 ó*  — | j         dk    rñt          | d¦  «        sá||                      d¦  «        d         v rÄt          | j        ¦  «        }t          j        t          | j        ¦  «        dz
  |¬¦  «        }|  	                    t
          j
        ¦  «        \  }}|||<   |                      |¦  «        }|dz  dk    r|j        }|�|j        |j        k    rt          d¦  «        ‚|                     d	||¬
¦  «        S t!          j        | |||¬
¦  «        S )z„Sum the array/matrix over the given axis.  If the axis is None, sum
        over both rows and columns, returning a scalar.
        r-   Ú	blocksize))r   rb   )r   éþÿÿÿr   r   r+   Nzdimensions do not matchrì   )rg   r,   Úout)rR   ÚhasattrrA   r    r,   rE   rF   rH   r<   Ú_minor_reduceÚaddÚ_ascontainerr°   r/   rM   rÄ   r   )rU   rg   r,   r  Ú	res_dtyperà   Úmajor_indexÚvalues           r`   rÄ   z_cs_matrix.sumn  s  € ð ŒI˜ŠNˆN¥7¨4°Ñ#=Ô#=ˆNØ˜Ÿ
š
Ð#5Ñ6Ô6°qÔ9Ð9Ð9å% d¤jÑ1Ô1ˆIÝ”(�3˜tœ{Ñ+Ô+¨aÑ/°yÐAÑAÔAˆCà!%×!3Ò!3µB´FÑ!;Ô!;ÑˆK˜Ø$ˆC�ÑØ×#Ò# CÑ(Ô(ˆCØ�a‰x˜1Š}ˆ}Ø”e�àˆ 3¤9°´	Ò#9Ð#9Ý Ð!:Ñ;Ô;Ð;à—7’7 ¨%°S�7Ñ9Ô9Ð9õ ”;˜t¨$°eÀÐEÑEÔEÐErj   c                 óÎ   — |€| j         }t          j        t          j        | j        ¦  «        ¦  «        }|                     |t          | j        |         ¦  «        ¦  «        }||fS )a›  Reduce nonzeros with a ufunc over the minor axis when non-empty

        Can be applied to a function of self.data by supplying data parameter.

        Warning: this does not call sum_duplicates()

        Returns
        -------
        major_index : array of ints
            Major indices where nonzero

        value : array of self.dtype
            Reduce result for nonzeros in each major_index
        )r>   rE   Úflatnonzerorf   r<   Úreduceatr   )rU   Úufuncr>   r  r  s        r`   r  z_cs_matrix._minor_reduceŠ  s_   € ð ˆ<Ø”9ˆDÝ”n¥R¤W¨T¬[Ñ%9Ô%9Ñ:Ô:ˆØ—’˜tÝ2°4´;¸{Ô3KÑLÔLñNô Nˆà˜EÐ!Ð!rj   c                 ó
  — d|cxk    r| j         d         k    rYn nVt          j        | j        |k    ¦  «        }|j        r| j        |d                  S | j        j                             d¦  «        S t          d|› d�¦  «        ‚)Nr   zindex (z) out of range)	r/   rE   r  r=   rË   r>   r,   ÚtypeÚ
IndexError)rU   ÚidxÚspots      r`   Ú_get_intz_cs_matrix._get_int¤  s�   € Ø�Ð$Ð$Ò$Ð$�t”z !”}Ò$Ð$Ð$Ð$Ð$Ý”> $¤,°#Ò"5Ñ6Ô6ˆDØŒyð *Ø”y  a¤Ô)Ð)Ø”9”?×'Ò'¨Ñ*Ô*Ð*ÝÐ6 3Ð6Ð6Ð6Ñ7Ô7Ð7rj   c                 ó  — |                       | j        ¦  «        \  }}|                       ||f¦  «        \  }}t          ||| j        | j        | j        ||dz   ||dz   ¦	  «	        \  }}}	|	                     | j        ¬¦  «        S )Nr   r+   )rA   r/   r   r<   r=   r>   rÄ   r,   )
rU   rØ   rÔ   rX   rY   ÚmajorÚminorr<   r=   r>   s
             r`   Ú_get_intXintz_cs_matrix._get_intXintÉ  s‚   € Ø�zŠz˜$œ*Ñ%Ô%‰ˆˆ1Ø—z’z 3¨ *Ñ-Ô-‰ˆˆuÝ 1Øˆq�$”+˜tœ|¨T¬YØ�5˜1‘9˜e U¨Q¡Yñ!0ô !0Ñˆ�˜ð �xŠx˜dœjˆxÑ)Ô)Ð)rj   c                 óÚ   — |                       ||f¦  «        \  }}|j        dv r!|j        dv r|                      ||d¬¦  «        S |                      |¦  «                             |¦  «        S )N)r   NTr5   )rA   ÚstepÚ_get_submatrixÚ_major_sliceÚ_minor_slice©rU   rØ   rÔ   r%  r&  s        r`   Ú_get_sliceXslicez_cs_matrix._get_sliceXsliceÑ  sq   € Ø—z’z 3¨ *Ñ-Ô-‰ˆˆuØŒ:˜Ð"Ð" u¤z°YÐ'>Ð'>Ø×&Ò& u¨e¸$Ð&Ñ?Ô?Ð?Ø× Ò  Ñ'Ô'×4Ò4°UÑ;Ô;Ð;rj   c                 óX  — | j         j        }|                      | j        ¦  «        \  }}|                      ||f¦  «        \  }}t	          j        ||¬¦  «        }t	          j        ||¬¦  «        }t	          j        |j        | j        ¬¦  «        }t          ||| j	        | j         | j
        |j        |                     ¦   «         |                     ¦   «         |¦	  «	         |j        dk    r|                      |¦  «        S |                      |                     |j        ¦  «        ¦  «        S )Nr+   r   )r=   r,   rA   r/   rE   rP   r”   rË   r   r<   r>   rÈ   rR   r  rN   rÃ   )	rU   rØ   rÔ   rZ   rX   rY   r%  r&  Úvals	            r`   Ú_get_arrayXarrayz_cs_matrix._get_arrayXarray×  sû   € à”LÔ&ˆ	Ø�zŠz˜$œ*Ñ%Ô%‰ˆˆ1Ø—z’z 3¨ *Ñ-Ô-‰ˆˆuÝ”
˜5¨	Ð2Ñ2Ô2ˆÝ”
˜5¨	Ð2Ñ2Ô2ˆåŒh�u”z¨¬Ð4Ñ4Ô4ˆÝ˜!˜Q ¤¨T¬\¸4¼9Øœ* e§k¢k¡m¤m°U·[²[±]´]ÀCñ	Iô 	Ið 	IàŒ:˜Š?ˆ?Ø×$Ò$ SÑ)Ô)Ð)Ø�~Š~˜cŸkšk¨%¬+Ñ6Ô6Ñ7Ô7Ð7rj   c                 ó†   — |                       ||f¦  «        \  }}|                      |¦  «                             |¦  «        S ©N)rA   Ú_major_index_fancyÚ_minor_index_fancyr-  s        r`   Ú_get_columnXarrayz_cs_matrix._get_columnXarrayæ  s=   € à—z’z 3¨ *Ñ-Ô-‰ˆˆuØ×&Ò& uÑ-Ô-×@Ò@ÀÑGÔGÐGrj   c           	      ó”  — |                       | j        | j        f¦  «        }t          j        ||¬¦  «                             ¦   «         }|                      | j        ¦  «        d         }t          |¦  «        }| j	        dk    r|                      ||f¦  «        n|f}|dk    r|  
                    || j        ¬¦  «        S | j        |dz            | j        |         z
                       |¦  «        }t          j        |dz   |¬¦  «        }t          j        ||dd…         ¬¦  «         |d         }	t          j        |	|¬¦  «        }
t          j        |	| j        ¬¦  «        }t!          ||| j                             |d¬	¦  «        | j                             |d¬	¦  «        | j        |
|¦  «         |  
                    ||
|f|d¬
¦  «        S )zBIndex along the major axis where idx is an array of ints.
        r+   r   r-   r   N©r  rb   Fr5   rÀ   )rC   r<   r=   rE   rP   rÈ   rA   rB   rH   rR   rN   r,   rS   rF   Úcumsumr”   r   r>   )rU   r!  rZ   r=   rY   rX   ró   Úrow_nnzÚ
res_indptrrs   Úres_indicesÚres_datas               r`   r4  z_cs_matrix._major_index_fancyë  s»  € ð ×)Ò)¨4¬;¸¼Ð*EÑFÔFˆ	Ý”*˜S¨	Ð2Ñ2Ô2×8Ò8Ñ:Ô:ˆà�JŠJ�tÔ(Ñ)Ô)¨!Ô,ˆÝ�‰LŒLˆØ*.¬)°qª.¨.�D—J’J  1˜vÑ&Ô&Ð&¸q¸dˆ	Ø�Š6ˆ6Ø—>’> )°4´:�>Ñ>Ô>Ð>à”;˜w¨™{Ô+¨d¬k¸'Ô.BÑB×JÒJÈ9ÑUÔUˆå”X˜a ™c¨Ð3Ñ3Ô3ˆ
Ý
Œ	�'˜z¨!¨"¨"œ~Ð.Ñ.Ô.Ð.à˜ŒnˆÝ”h˜s¨)Ð4Ñ4Ô4ˆÝ”8˜C t¤zÐ2Ñ2Ô2ˆÝØØØŒK×Ò˜y¨uÐÑ5Ô5ØŒL×Ò 	°ÐÑ6Ô6ØŒIØØñ	
ô 	
ð 	
ð �~Š~˜x¨°jÐAØ$-°Eð ñ ;ô ;ð 	;rj   c           
      ó^  — |t          d¦  «        k    r|r|                      ¦   «         n| S |                      | j        ¦  «        \  }}|                     |¦  «        \  }}}t          t          |||¦  «        ¦  «        }| j        dk    r|                      ||f¦  «        n|f}|dk    r|                      || j	        ¬¦  «        S ||}
}	|dk    r|dk    rd}
|dz   |dz   }}| j
        |||…         | j
        |	|
|…         z
  }| j        j	        }t          j        |dz   |¬¦  «        }t          j        ||dd…         ¬¦  «         |dk    rit          | j
        |         | j
        |         ¦  «        }t          j        | j        |         |¬¦  «        }t          j        | j        |         |¬¦  «        }n^|d         }t          j        ||¬¦  «        }t          j        || j	        ¬¦  «        }t#          |||| j
        | j        | j        ||¦  «         |                      |||f|d	¬
¦  «        S )z@Index along the major axis where idx is a slice object.
        Nr-   r   r+   rb   r   r8  r5   FrÀ   )Úslicer3   rA   rB   r=   rH   ÚrangerR   rN   r,   r<   rE   rF   r9  rL   r>   r”   r   )rU   r!  r3   rX   rY   ÚstartÚstopr)  ró   Ústart0Ústop0Ústart1Ústop1r:  rZ   r;  Úall_idxr<  r=  rs   s                       r`   r+  z_cs_matrix._major_slice  s9  € ð •%˜‘+”+ÒÐØ"&Ð0�4—9’9‘;”;�;¨DÐ0à�zŠz˜$Ô+Ñ,Ô,‰ˆˆ1ØŸKšK¨™NœNÑˆˆt�TÝ•�e˜T 4Ñ(Ô(Ñ)Ô)ˆØ*.¬)°qª.¨.�D—J’J  1˜vÑ&Ô&Ð&¸q¸dˆ	Ø�Š6ˆ6Ø—>’> )°4´:�>Ñ>Ô>Ð>ð ˜t�ˆØ�2Š:ˆ:˜% 1š*˜*ØˆEØ ™	 4¨!¡8�ˆà”+˜f U¨4Ð/Ô0ØŒK˜˜u TÐ)Ô*ñ+ˆà”LÔ&ˆ	Ý”X˜a ™c¨Ð3Ñ3Ô3ˆ
Ý
Œ	�'˜z¨!¨"¨"œ~Ð.Ñ.Ô.Ð.à�1Š9ˆ9Ý˜DœK¨Ô.°´¸DÔ0AÑBÔBˆGÝœ( 4¤<°Ô#8¸tÐDÑDÔDˆKÝ”x ¤	¨'Ô 2¸Ð>Ñ>Ô>ˆHˆHà˜R”.ˆCÝœ( 3¨iÐ8Ñ8Ô8ˆKÝ”x ¨4¬:Ð6Ñ6Ô6ˆHÝ˜%  t¨T¬[¸$¼,Øœ) [°(ñ<ô <ð <ð �~Š~˜x¨°jÐAØ$-°Eð ñ ;ô ;ð 	;rj   c           
      óÊ  — |                       | j        | j        f¦  «        }| j                             |d¬¦  «        }| j                             |d¬¦  «        }t	          j        ||¬¦  «                             ¦   «         }|                      | j        ¦  «        \  }}t          |¦  «        }| j
        dk    r|                      ||f¦  «        n|f}|dk    r|                      || j        ¬¦  «        S t	          j        ||¬¦  «        }	t	          j        | j        |¬¦  «        }
t          |||||||	|
¦  «         t	          j        |¦  «                             |d¬¦  «        }|
d         }t	          j        ||¬¦  «        }t	          j        || j        ¬¦  «        }t%          ||	t          | j        ¦  «        || j        ||¦  «         |                      |||
f|d¬¦  «        S )zBIndex along the minor axis where idx is an array of ints.
        Fr5   r+   r-   r   rb   rÀ   )rC   r=   r<   rS   rE   rP   rÈ   rA   rB   rH   rR   rN   r,   rF   Ú
empty_liker   Úargsortr”   r   r>   )rU   r!  rZ   r=   r<   rX   rY   r÷   ró   Úcol_offsetsr;  Ú	col_orderrs   r<  r=  s                  r`   r5  z_cs_matrix._minor_index_fancy4  sâ  € ð ×)Ò)¨4¬<¸¼Ð*EÑFÔFˆ	Ø”,×%Ò% i°eÐ%Ñ<Ô<ˆØ”×#Ò# I°EÐ#Ñ:Ô:ˆåŒj˜ IÐ.Ñ.Ô.×4Ò4Ñ6Ô6ˆà�zŠz˜$Ô+Ñ,Ô,‰ˆˆ1Ý�‰HŒHˆØ*.¬)°qª.¨.�D—J’J  1˜vÑ&Ô&Ð&¸q¸dˆ	Ø�Š6ˆ6Ø—>’> )°4´:�>Ñ>Ô>Ð>õ ”h˜q¨	Ð2Ñ2Ô2ˆÝ”] 4¤;°iÐ@Ñ@Ô@ˆ
ÝØØØØØØØØñ		
ô 		
ð 		
õ ”J˜s‘O”O×*Ò*¨9¸5Ð*ÑAÔAˆ	Ø˜ŒnˆÝ”h˜s¨)Ð4Ñ4Ô4ˆÝ”8˜C t¤zÐ2Ñ2Ô2ˆÝ˜) [µ#°d´lÑ2CÔ2CØ! 4¤9¨k¸8ñ	Eô 	Eð 	Eà�~Š~˜x¨°jÐAØ$-°Eð ñ ;ô ;ð 	;rj   c                 óú  — |t          d¦  «        k    r|r|                      ¦   «         n| S |                      | j        ¦  «        \  }}|                     |¦  «        \  }}}t          t          |||¦  «        ¦  «        }|dk    r1|                      |                      ||f¦  «        | j        ¬¦  «        S |dk    r|  	                    ||¬¦  «        S |  
                    t          j        |||¦  «        ¦  «        S )z@Index along the minor axis where idx is a slice object.
        Nr   r+   r   )r&  r3   )r?  r3   rA   rB   r=   rH   r@  rN   r,   r*  r5  rE   rÖ   )rU   r!  r3   rX   rY   rA  rB  r)  s           r`   r,  z_cs_matrix._minor_slice[  sè   € ð •%˜‘+”+ÒÐØ"&Ð0�4—9’9‘;”;�;¨DÐ0à�zŠz˜$Ô+Ñ,Ô,‰ˆˆ1ØŸKšK¨™NœNÑˆˆt�TÝ•�e˜T 4Ñ(Ô(Ñ)Ô)ˆØ�Š6ˆ6Ø—>’> $§*¢*¨a°¨VÑ"4Ô"4¸D¼J�>ÑGÔGÐGØ�1Š9ˆ9Ø×&Ò&¨S°tÐ&Ñ<Ô<Ð<à×&Ò&¥r¤y°¸¸dÑ'CÔ'CÑDÔDÐDrj   c                 óà  — |                       | j        ¦  «        \  }}t          ||¦  «        \  }}t          ||¦  «        \  }}	|dk    r*|dk    r$||k    r|	|k    r|r|                      ¦   «         n| S t	          ||| j        | j        | j        ||||	¦	  «	        \  }
}}|                       ||z
  |	|z
  f¦  «        }| j        dk    r	|d         f}|  	                    |||
f|| j
        d¬¦  «        S )zbReturn a submatrix of this matrix.

        major, minor: None, int, or slice with step 1
        r   r   F)r/   r,   r3   )rA   rB   Ú_process_slicer3   r   r<   r=   r>   rR   rN   r,   )rU   r%  r&  r3   rX   rY   Úi0Úi1Új0Új1r<   r=   r>   r/   s                 r`   r*  z_cs_matrix._get_submatrixk  s  € ð
 �zŠz˜$Ô+Ñ,Ô,‰ˆˆ1Ý  qÑ)Ô)‰ˆˆBÝ  qÑ)Ô)‰ˆˆBà�Š7ˆ7�r˜Q’w�w 2¨¢7 7¨r°Qªw¨wØ"&Ð0�4—9’9‘;”;�;¨DÐ0å 1Øˆq�$”+˜tœ|¨T¬Y¸¸BÀÀBñ!Hô !HÑˆ�˜ð —
’
˜B ™G R¨"¡WÐ-Ñ.Ô.ˆØŒ9˜Š>ˆ>Ø˜1”X�KˆEØ�~Š~˜t W¨fÐ5¸UØ$(¤J°Uð ñ <ô <ð 	<rj   c                 óh   — |                       d|f¦  «        \  }}|                      |||¦  «         d S r  ©rA   Ú	_set_many)rU   r!  ru   r%  r&  s        r`   Ú_set_intz_cs_matrix._set_int€  s7   € Ø—z’z 1 c (Ñ+Ô+‰ˆˆuØ�Š�u˜e QÑ'Ô'Ð'Ð'Ð'rj   c                 ó  — |                       t          j        |¦  «        |f¦  «        \  }}|j        d         dk    o|j        d         dk    }|r%t          j        |j        |j        d         ¦  «        }|                      |||¦  «         d S )Nrb   r   )rA   rE   Ú
zeros_liker/   rÕ   r>   rV  )rU   r!  ru   r%  r&  Ú	broadcasts         r`   Ú
_set_arrayz_cs_matrix._set_array„  sƒ   € Ø—z’z¥2¤=°Ñ#5Ô#5°sÐ";Ñ<Ô<‰ˆˆuØ”G˜B”K 1Ò$Ð=¨¬°R¬¸AÒ)=ˆ	Øð 	1Ý”	˜!œ& #¤)¨B¤-Ñ0Ô0ˆAØ�Š�u˜e QÑ'Ô'Ð'Ð'Ð'rj   c                 óh   — |                       ||f¦  «        \  }}|                      |||¦  «         d S r3  rU  ©rU   rØ   rÔ   ru   rl   Újs         r`   Ú_set_intXintz_cs_matrix._set_intXint‹  ó7   € Ø�zŠz˜3 ˜*Ñ%Ô%‰ˆˆ1Ø�Š�q˜!˜QÑÔÐÐÐrj   c                 óh   — |                       ||f¦  «        \  }}|                      |||¦  «         d S r3  rU  r]  s         r`   Ú_set_arrayXarrayz_cs_matrix._set_arrayXarray�  r`  rj   c                 ó,  —  | j         |                      ||f¦  «        Ž  |j        \  }}|dk    o|j        d         dk    }|dk    o|j        d         dk    }|j        |j        }	}t          j        |j        | j        ¬¦  «        }|j	        dk    rd S |r^t          j
        t          j        |¦  «        t          |¦  «        ¦  «        }t          j        |	|¦  «        }	t          j        ||¦  «        }|r^t          j
        ||¦  «        }t          j        t          j        |¦  «        t          |	¦  «        ¦  «        }	t          j
        ||¦  «        }|                      |||	f         |||	f         f¦  «        \  }
}|                      |
||¦  «         d S )Nr   r   r+   )Ú
_zero_manyrA   r/   rØ   rÔ   rE   rP   r>   r,   rË   rÕ   rÖ   rH   r×   rV  )rU   rØ   rÔ   ru   rX   rY   Úbroadcast_rowÚbroadcast_colÚrÚcrl   r^  s               r`   Ú_set_arrayXarray_sparsez"_cs_matrix._set_arrayXarray_sparse“  sa  € àˆŒ˜Ÿš S¨# JÑ/Ô/Ð0Ð0àŒy‰ˆˆ1Ø˜QšÐ2 1¤7¨1¤:°¢?ˆØ˜QšÐ2 1¤7¨1¤:°¢?ˆØŒu�a”eˆ1ˆåŒJ�q”v T¤ZÐ0Ñ0Ô0ˆØŒ6�QŠ;ˆ;ØˆFàð 	Ý”	�"œ) A™,œ,­¨A©¬Ñ/Ô/ˆAÝ”˜˜1‘”ˆAÝ”˜˜1‘”ˆAØð 	 Ý”	˜!˜Q‘”ˆAÝ”�œ	 !™œ¥c¨!¡f¤fÑ-Ô-ˆAÝ”	˜!˜Q‘”ˆAà�zŠz˜3˜q !˜tœ9 c¨!¨Q¨$¤iÐ0Ñ1Ô1‰ˆˆ1Ø�Š�q˜!˜QÑÔÐÐÐrj   c           
      óö  — d| j         v rd S | j        dk    rt          d¦  «        ‚| j         \  }}|j        dk    }|dk     r}|rt          ||z   |¦  «        }n!t          ||z   |t	          |¦  «        ¦  «        }t          j        | ||z
  | j        j        ¬¦  «        }t          j        || j        j        ¬¦  «        }n{|rt          |||z
  ¦  «        }n!t          |||z
  t	          |¦  «        ¦  «        }t          j        || j        j        ¬¦  «        }t          j        |||z   | j        j        ¬¦  «        }|s|d t	          |¦  «        …         }t          j	        t          j
        || j        ¬¦  «        ¦  «                             ¦   «         }	|	                     ¦   «         j         |                     ¦   «         j         k    rt          j        |	|j         ¦  «        }	|	j        dk    rd S |                      ||f¦  «        \  }}|                      ||f¦  «        \  }}|	j        }
t          j        |
| j        j        ¬¦  «        }t#          ||| j        | j        |
|||¦  «        }|dk    r4|                      ¦   «          t#          ||| j        | j        |
|||¦  «         d|vr|	| j        |<   d S |dk    }|                     ¦   «         | j        dz  k     rH||         }||         }|                      |||	|         ¦  «         | }|	|         | j        ||         <   d S |                      ¦   «         }|                     ||¦  «         |                     | j        ¦  «        }|\  | _        | _        | _        }d S )Nr   r   z"diagonals cant be set in 1d arraysr+   rb   gü©ñÒMbP?)r/   rR   r“   rt   rH   rE   rÖ   r=   r,   Ú
atleast_1drP   rÈ   ÚsqueezeÚbroadcast_torË   rA   r”   r   r<   rK   r>   rÄ   rs   Ú_insert_manyrÏ   Ú_setdiagrJ   )rU   Úvaluesr÷   rX   rY   rZ  Ú	max_indexrl   r^  ru   Ú	n_samplesÚoffsetsrà   Úmaskr[   r\   rh   s                    r`   ro  z_cs_matrix._setdiag¬  sQ  € Ø�”
ˆ?ˆ?ØˆFØŒ9˜Š>ˆ>Ý%Ð&JÑKÔKÐKàŒz‰ˆˆ1Ø”[ AÒ%ˆ	àˆqŠ5ˆ5Øð 7Ý  A¡ q™MœM�	�	å  A¡ q­#¨f©+¬+Ñ6Ô6�	Ý”	˜1˜"˜i¨!™m°4´<Ô3EÐFÑFÔFˆAÝ”	˜)¨4¬<Ô+=Ð>Ñ>Ô>ˆAˆAð ð 7Ý  1 q¡5™MœM�	�	å  1 q¡5­#¨f©+¬+Ñ6Ô6�	Ý”	˜)¨4¬<Ô+=Ð>Ñ>Ô>ˆAÝ”	˜!˜Q ™]°$´,Ô2DÐEÑEÔEˆAàð 	%Ø˜G�S ™VœV˜G”_ˆFåŒM�"œ* V°4´:Ð>Ñ>Ô>Ñ?Ô?×EÒEÑGÔGˆØ�9Š9‰;Œ;Ô §	¢	¡¤Ô 1Ò1Ð1Ý”  1¤7Ñ+Ô+ˆAØŒ6�QŠ;ˆ;ØˆFà�zŠz˜1˜a˜&Ñ!Ô!‰ˆˆ1Ø�zŠz˜1˜a˜&Ñ!Ô!‰ˆˆ1Ø”Fˆ	Ý”(˜9¨D¬LÔ,>Ð?Ñ?Ô?ˆÝ   A t¤{°D´LÀ)Ø!" A wñ0ô 0ˆà�!Š8ˆ8à×ÒÑ!Ô!Ð!Ý˜q ! T¤[°$´,À	Ø  ! Wñ.ô .ð .à�WÐÐà!"ˆDŒI�gÑØˆFà˜2’ˆð �8Š8‰:Œ:˜œ 5Ñ(Ò(Ð(à�$”ˆAØ�$”ˆAØ×Ò˜a  A d¤GÑ,Ô,Ð,à�5ˆDØ'(¨¤wˆDŒI�g˜d”mÑ$Ð$Ð$ð —*’*‘,”,ˆCØ�LŠL˜ Ñ#Ô#Ð#Ø×+Ò+¨D¬JÑ7Ô7ˆFØ6<Ñ3ˆDŒK˜œ t¤y°!°!°!rj   c                 óŽ  — |                       | j        ¦  «        \  }}d„ }t          j        t          j        || j        j        ¬¦  «        ¦  «                             ¦   «         }t          j        t          j        || j        j        ¬¦  «        ¦  «                             ¦   «         } |||¦  «          |||¦  «         ||||fS )Nc                 óÀ   — |                       ¦   «         }||k    rt          d||fz  ¦  «        ‚|                      ¦   «         }|| k     rt          d||fz  ¦  «        ‚d S )Nzindex (%d) out of range (>= %d)zindex (%d) out of range (< -%d))rD   r   rt   )r=   Úboundr!  s      r`   Úcheck_boundsz1_cs_matrix._prepare_indices.<locals>.check_boundsó  sy   € Ø—+’+‘-”-ˆCØ�eŠ|ˆ|Ý Ð!BØ"% u ñ".ñ /ô /ð /à—+’+‘-”-ˆCØ�e�VŠ|ˆ|Ý Ð!BØ"% u ñ".ñ /ô /ð /ð ˆ|rj   r+   )rA   rB   rE   rk  rP   r=   r,   rÈ   )rU   rl   r^  rX   rY   rx  s         r`   Ú_prepare_indicesz_cs_matrix._prepare_indicesð  s»   € Ø�zŠz˜$Ô+Ñ,Ô,‰ˆˆ1ð	/ð 	/ð 	/õ ŒM�"œ* Q¨d¬lÔ.@ÐAÑAÔAÑBÔB×HÒHÑJÔJˆÝŒM�"œ* Q¨d¬lÔ.@ÐAÑAÔAÑBÔB×HÒHÑJÔJˆØˆ�Q˜ÑÔÐØˆ�Q˜ÑÔÐØ�!�Q˜ˆzÐrj   c           
      ó  — |                       ||¦  «        \  }}}}t          j        t          j        || j        ¬¦  «        ¦  «                             ¦   «         }|j        }t          j        || j        j        ¬¦  «        }t          ||| j
        | j        ||||¦  «        }|dk    r4|                      ¦   «          t          ||| j
        | j        ||||¦  «         d|vr|| j        |<   dS t          d| j        j        › d�t           d¬¦  «         |dk    }	||	         | j        ||	         <   |	 }	||	         }||d	k     xx         |z  cc<   ||	         }||d	k     xx         |z  cc<   |                      ||||	         ¦  «         dS )
z�Sets value at each (i, j) to x

        Here (i,j) index major and minor respectively, and must not contain
        duplicate entries.
        r+   r   rb   Nz%Changing the sparsity structure of a z. is expensive. lil and dok are more efficient.r0   rn   r   )ry  rE   rk  rP   r,   rÈ   rË   r”   r=   r   r<   rK   r>   r   rN   rO   r
   rn  )
rU   rl   r^  ru   rX   rY   rr  rs  rà   rt  s
             r`   rV  z_cs_matrix._set_many  s¶  € ð ×*Ò*¨1¨aÑ0Ô0‰
ˆˆ1ˆa�ÝŒM�"œ* Q¨d¬jÐ9Ñ9Ô9Ñ:Ô:×@Ò@ÑBÔBˆà”Fˆ	Ý”(˜9¨D¬LÔ,>Ð?Ñ?Ô?ˆÝ   A t¤{°D´LÀ)Ø!" A wñ0ô 0ˆà�!Š8ˆ8à×ÒÑ!Ô!Ð!Ý˜q ! T¤[°$´,À	Ø  ! Wñ.ô .ð .ð �WÐÐà!"ˆDŒI�gÑØˆFõ ð ?¸¼Ô9Pð ?ð ?ð ?å(°Qð8ñ 8ô 8ð 8ð ˜R’<ˆDØ'(¨¤wˆDŒI�g˜d”mÑ$à�5ˆDØ�$”ˆAØˆa�!ŠeˆHˆHŒH˜‰MˆHˆH‰HØ�$”ˆAØˆa�!ŠeˆHˆHŒH˜‰MˆHˆH‰HØ×Ò˜a  A d¤GÑ,Ô,Ð,Ð,Ð,rj   c           
      óv  — |                       ||¦  «        \  }}}}t          |¦  «        }t          j        || j        j        ¬¦  «        }t          ||| j        | j        ||||¦  «        }|dk    r4|                      ¦   «          t          ||| j        | j        ||||¦  «         d| j	        ||dk             <   dS )z‚Sets value at each (i, j) to zero, preserving sparsity structure.

        Here (i,j) index major and minor respectively.
        r+   r   r   rb   N)
ry  rH   rE   r”   r=   r,   r   r<   rK   r>   )rU   rl   r^  rX   rY   rr  rs  rà   s           r`   rd  z_cs_matrix._zero_many*  sÈ   € ð
 ×*Ò*¨1¨aÑ0Ô0‰
ˆˆ1ˆa�å˜‘F”Fˆ	Ý”(˜9¨D¬LÔ,>Ð?Ñ?Ô?ˆÝ   A t¤{°D´LÀ)Ø!" A wñ0ô 0ˆà�!Š8ˆ8à×ÒÑ!Ô!Ð!Ý˜q ! T¤[°$´,À	Ø  ! Wñ.ô .ð .ð ,-ˆŒ	�'˜' Bš,Ô'Ñ(Ð(Ð(rj   c           	      ó  — t          j        |d¬¦  «        }|                     |d¬¦  «        }|                     |d¬¦  «        }|                     |d¬¦  «        }| j        }|                      | j        | j        f| j        d         |j        z   ¬¦  «        }t          j        | j        |¬¦  «        | _        t          j        | j        |¬¦  «        | _        t          j        ||¬¦  «        }t          j        ||¬¦  «        }g }g }t          j	        |d¬	¦  «        \  }	}
t          j
        |
t          |¦  «        ¦  «        }
t          j        |
¦  «        }d
}t          t          |	|
|
dd…         ¦  «        ¦  «        D �]O\  }\  }}}| j        |         }| j        |         }| 
                    | j        ||…         ¦  «         | 
                    | j        ||…         ¦  «         t          j	        |||…         ddd…         d¬	¦  «        \  }}t          |¦  «        ||z
  k    r;| 
                    |||…         ¦  «         | 
                    |||…         ¦  «         nj| 
                    |||…         ddd…         |         ¦  «         | 
                    |||…         ddd…         |         ¦  «         t          |¦  «        ||<   |}�ŒQ| j        |         }| 
                    | j        |d…         ¦  «         | 
                    | j        |d…         ¦  «         t          j        |¦  «        | _        t          j        |¦  «        | _        t          j        | j        j        |¬¦  «        } |d
¦  «        |d
<   t          j        | j        ¦  «        }||	xx         |z  cc<   ||dd…<   t          j        ||¬¦  «        | _        |rd| _        |                      ¦   «          |                      d¬¦  «         dS )a:  Inserts new nonzero at each (i, j) with value x

        Here (i,j) index major and minor respectively.
        i, j and x must be non-empty, 1d arrays.
        Inserts each major group (e.g. all entries per row) at a time.
        Maintains has_sorted_indices property.
        Modifies i, j, x in place.
        Ú	mergesort)rp   Úclip)Úmoderb   r(   r+   T)Úreturn_indexr   r   Nr8  Fr6   )rE   rJ  ÚtakeÚhas_sorted_indicesrC   r=   r<   rË   rP   ÚuniqueÚappendrH   rf   Ú	enumerateÚzipr>   Úconcatenater”   r/   r9  Úsort_indicesrT   )rU   rl   r^  ru   r¬   Údo_sortrZ   Úindices_partsÚ
data_partsÚuiÚ	ui_indptrÚnew_nnzsÚprevrh  ÚiiÚjsÚjerA  rB  ÚujÚ	uj_indptrÚnnzsÚindptr_diffs                          r`   rn  z_cs_matrix._insert_many>  sÓ  € õ ”
˜1 ;Ð/Ñ/Ô/ˆØ�FŠF�5˜vˆFÑ&Ô&ˆØ�FŠF�5˜vˆFÑ&Ô&ˆØ�FŠF�5˜vˆFÑ&Ô&ˆàÔ)ˆð ×)Ò)¨4¬<¸¼Ð*EØ,0¬K¸¬O¸a¼fÑ,Dð *ñ Gô Gˆ	å”j ¤°IÐ>Ñ>Ô>ˆŒÝ”z $¤,°iÐ@Ñ@Ô@ˆŒÝŒJ�q 	Ð*Ñ*Ô*ˆÝŒJ�q 	Ð*Ñ*Ô*ˆð ˆØˆ
Ýœ	 !°$Ð7Ñ7Ô7‰ˆˆIÝ”I˜i­¨Q©¬Ñ0Ô0ˆ	Ý”7˜9Ñ%Ô%ˆØˆÝ(­¨R°¸IÀaÀbÀb¼MÑ)JÔ)JÑKÔKð 	ñ 	‰OˆA‰|��B˜à”K Ô%ˆEØ”;˜r”?ˆDØ× Ò  ¤¨e°D¨jÔ!9Ñ:Ô:Ð:Ø×Ò˜dœi¨¨d¨
Ô3Ñ4Ô4Ð4õ œI a¨¨2¨¤h¨t¨t°¨t¤nÀ4ÐHÑHÔH‰MˆB�	Ý�2‰wŒw˜"˜r™'Ò!Ð!Ø×$Ò$ Q r¨" u¤XÑ.Ô.Ð.Ø×!Ò! ! B r E¤(Ñ+Ô+Ð+Ð+à×$Ò$ Q r¨" u¤X¨d¨d°¨d¤^°IÔ%>Ñ?Ô?Ð?Ø×!Ò! ! B r E¤(¨4¨4¨R¨4¤.°Ô";Ñ<Ô<Ð<Ý! "™gœg�˜‘àˆD‰Dð ”˜B”ˆØ×Ò˜Tœ\¨%¨&¨&Ô1Ñ2Ô2Ð2Ø×Ò˜$œ) E F FÔ+Ñ,Ô,Ð,õ ”~ mÑ4Ô4ˆŒÝ”N :Ñ.Ô.ˆŒ	ÝŒx˜œÔ)°Ð;Ñ;Ô;ˆØ�)˜A‘,”,ˆˆQ‰Ý”g˜dœkÑ*Ô*ˆØ�BˆˆŒ˜8Ñ#ˆˆ‰ØˆˆQˆRˆR‰Ý”i ¨$Ð/Ñ/Ô/ˆŒàð 	 à&+ˆDÔ#Ø×ÒÑÔÐà×Ò UÐÑ+Ô+Ð+Ð+Ð+rj   c                 óî  — | j         dk    r>|                      ¦   «         }|                      |j        |j        ff|j        |¬¦  «        S |                      | j        ¦  «        \  }}| j        }t          j        t          |¦  «        | j        j
        ¬¦  «        }t          j        || j        |¦  «         |                      ||f¦  «        }|                      | j        |f| j        || j
        ¬¦  «        S )Nr   r5   r+   r2   )rR   ÚtocsrrI   r>   r=   r/   rA   rE   r”   rH   r,   r   Ú	expandptrr<   )rU   r3   Úcsrrô   Ú	minor_dimÚminor_indicesÚmajor_indicesrÐ   s           r`   rÏ   z_cs_matrix.tocooŠ  sá   € ØŒ9˜Š>ˆ>Ø—*’*‘,”,ˆCØ×&Ò&¨¬°3´;°.Ð'AÀ3Ä9ÐSWÐ&ÑXÔXÐXØ#Ÿzšz¨$¬*Ñ5Ô5Ñˆ	�9ØœˆÝœ¥ ]Ñ!3Ô!3¸4¼<Ô;MÐNÑNÔNˆÝÔ˜y¨$¬+°}ÑEÔEÐEØ—’˜]¨MÐ:Ñ;Ô;ˆà×"Ò"ØŒY˜Ð ¤°$¸d¼jð #ñ 
ô 
ð 	
rj   c                 óº  — |€|€|                       d¦  «        d         }|                      ||¦  «        }|j        j        s|j        j        st          d¦  «        ‚|j        j        r|                      ¦   «         }|}n|                      ¦   «         }|j        }|                      |j	        ¦  «        \  }}t          |||j        |j        |j        |¦  «         |S )NÚcfr   z&Output array must be C or F contiguous)rA   Ú_process_toarray_argsr®   r¯   Úf_contiguousrM   r˜  rÆ   r°   rB   r   r<   r=   r>   )rU   r¬   r  ru   r³   rX   rY   s          r`   rÂ   z_cs_matrix.toarrayš  sÏ   € Øˆ;˜5˜=Ø—J’J˜tÑ$Ô$ QÔ'ˆEØ×(Ò(¨°Ñ4Ô4ˆØ”	Ô&ð 	G¨#¬)Ô*@ð 	GÝÐEÑFÔFÐFàŒ9Ô!ð 	Ø—
’
‘”ˆAØˆAˆAà—
’
‘”ˆAØ”ˆAØ�wŠw�q”~Ñ&Ô&‰ˆˆ1Ý�A�q˜!œ( A¤I¨q¬v°qÑ9Ô9Ð9Øˆ
rj   c                 ó¶   — |                       | j        ¦  «        \  }}t          j        ||| j        | j        | j        ¦  «         |                      ¦   «          dS )z\Remove zero entries from the array/matrix

        This is an *in place* operation.
        N)rA   rB   r   Úcsr_eliminate_zerosr<   r=   r>   rr   ©rU   rX   rY   s      r`   rx   z_cs_matrix.eliminate_zeros±  sL   € ð
 �zŠz˜$Ô+Ñ,Ô,‰ˆˆ1ÝÔ(¨¨A¨t¬{¸D¼LÈ$Ì)ÑTÔTÐTØ�
Š
‰Œˆˆˆrj   Úreturnc                 óð   — t          | dd¦  «        sd| _        nWt          | d¦  «        sGt          t	          j        t          | j        ¦  «        dz
  | j        | j        ¦  «        ¦  «        | _	        | j        S )aZ  Whether the array/matrix has sorted indices and no duplicates

        Returns
            - True: if the above applies
            - False: otherwise

        has_canonical_format implies has_sorted_indices, so if the latter flag
        is False, so will the former be; if the former is found True, the
        latter flag is also set.
        Ú_has_sorted_indicesTFÚ_has_canonical_formatr   )
rä   r¨  r  Úboolr   Úcsr_has_canonical_formatrH   r<   r=   Úhas_canonical_format©rU   s    r`   r«  z_cs_matrix.has_canonical_formatº  s€   € õ �tÐ2°DÑ9Ô9ð 	à).ˆDÔ&Ð&Ý˜Ð6Ñ7Ô7ð 	Ý(,ÝÔ5Ý˜œÑ$Ô$ qÑ(¨$¬+°t´|ñEô Eñ)ô )ˆDÔ%ð Ô)Ð)rj   r0  c                 óD   — t          |¦  «        | _        |r	d| _        d S d S )NT)r©  r¨  r‚  ©rU   r0  s     r`   r«  z_cs_matrix.has_canonical_formatÑ  s0   € å%)¨#¡Y¤YˆÔ"Øð 	+Ø&*ˆDÔ#Ð#Ð#ð	+ð 	+rj   c                 óþ   — | j         rdS |                      ¦   «          |                      | j        ¦  «        \  }}t	          j        ||| j        | j        | j        ¦  «         |  	                    ¦   «          d| _         dS )zfEliminate duplicate entries by adding them together

        This is an *in place* operation.
        NT)
r«  rˆ  rA   rB   r   Úcsr_sum_duplicatesr<   r=   r>   rr   r¤  s      r`   rK   z_cs_matrix.sum_duplicates×  sx   € ð
 Ô$ð 	ØˆFØ×ÒÑÔÐà�zŠz˜$Ô+Ñ,Ô,‰ˆˆ1ÝÔ'¨¨1¨d¬k¸4¼<ÈÌÑSÔSÐSà�
Š
‰ŒˆØ$(ˆÔ!Ð!Ð!rj   c                 ó¾   — t          | d¦  «        sGt          t          j        t	          | j        ¦  «        dz
  | j        | j        ¦  «        ¦  «        | _        | j        S )z¢Whether the indices are sorted

        Returns
            - True: if the indices of the array/matrix are in sorted order
            - False: otherwise
        r§  r   )r  r©  r   Úcsr_has_sorted_indicesrH   r<   r=   r§  r¬  s    r`   r‚  z_cs_matrix.has_sorted_indicesæ  s`   € õ �tÐ2Ñ3Ô3ð 	Ý'+ÝÔ3Ý˜œÑ$Ô$ qÑ(¨$¬+°t´|ñEô Eñ(ô (ˆDÔ$ð Ô'Ð'rj   c                 ó.   — t          |¦  «        | _        d S r3  )r©  r§  r®  s     r`   r‚  z_cs_matrix.has_sorted_indicesö  s   € å#'¨¡9¤9ˆÔ Ð Ð rj   c                 óV   — |                       ¦   «         }|                     ¦   «          |S )z?Return a copy of this array/matrix with sorted indices
        )r3   rˆ  )rU   ÚAs     r`   Úsorted_indicesz_cs_matrix.sorted_indicesû  s&   € ð �IŠI‰KŒKˆØ	�ŠÑÔÐØˆrj   c                 óœ   — | j         sDt          j        t          | j        ¦  «        dz
  | j        | j        | j        ¦  «         d| _         dS dS )z9Sort the indices of this array/matrix *in place*
        r   TN)r‚  r   Úcsr_sort_indicesrH   r<   r=   r>   r¬  s    r`   rˆ  z_cs_matrix.sort_indices  s]   € ð Ô&ð 	+ÝÔ)­#¨d¬kÑ*:Ô*:¸QÑ*>ÀÄØ*.¬,¸¼	ñCô Cð Cà&*ˆDÔ#Ð#Ð#ð	+ð 	+rj   c                 óâ  — |                       | j        ¦  «        d         }t          | j        ¦  «        |dz   k    rt	          d¦  «        ‚t          | j        ¦  «        | j        k     rt	          d¦  «        ‚t          | j        ¦  «        | j        k     rt	          d¦  «        ‚t          | j        d| j        …         ¦  «        | _        t          | j        d| j        …         ¦  «        | _        dS )z8Remove empty space after all non-zero elements.
        r   r   z index pointer has invalid lengthz)indices array has fewer than nnz elementsz&data array has fewer than nnz elementsN)	rA   rB   rH   r<   rM   r=   rs   r>   r   )rU   rô   s     r`   rr   z_cs_matrix.prune  sË   € ð —J’J˜tÔ0Ñ1Ô1°!Ô4ˆ	åˆtŒ{ÑÔ˜y¨1™}Ò,Ð,ÝÐ?Ñ@Ô@Ð@ÝˆtŒ|ÑÔ˜tœxÒ'Ð'ÝÐHÑIÔIÐIÝˆtŒy‰>Œ>˜DœHÒ$Ð$ÝÐEÑFÔFÐFå# D¤L°°$´(°Ô$;Ñ<Ô<ˆŒÝ  ¤¨9¨D¬H¨9Ô!5Ñ6Ô6ˆŒ	ˆ	ˆ	rj   c                 óî  — t          |t          | t          ¦  «        ¬¦  «        }t          | d¦  «        r{| j        \  }}t          |d         |¦  «        \  }}t          |d         |¦  «        \  }}|s|rt          d| j        › d|› �¦  «        ‚| j        d         |z  | j        d         |z  }	}nR|                      t          |¦  «        dk    r|n	d|d         f¦  «        \  }}|                      | j
        ¦  «        \  }}	||k     rV| j        d | j        |         …         | _        | j        d | j        |         …         | _        | j        d |dz   …         | _        nX||k    rRt          j        | j        |dz   ¦  «        | _        | j        |dz   d …                              | j        |         ¦  «         ||	k     r²| j        |k     }
t          j        |
¦  «        s“| j        |
         | _        | j        |
         | _        |                      t          j        |
¦  «        \  }}| j                             d¦  «         || j        dd …         |<   t          j        | j        | j        ¬¦  «         || _        d S )Nr&   r  r   r   zshape must be divisible into z blocks. Got r8  )r!   r9   r	   r  r  ÚdivmodrM   r/   rA   rH   rB   r=   r<   r>   rE   Úresizer–   Úallr  r  r9  r?   )rU   r/   ÚbmÚbnÚnew_MÚrmÚnew_NÚrnrX   rY   rt  r  r0  s                r`   r¼  z_cs_matrix.resize  s^  € Ý˜E­J°t½WÑ,EÔ,EÐFÑFÔFˆå�4˜Ñ%Ô%ð 
	1Ø”^‰FˆB�Ý˜u Qœx¨Ñ,Ô,‰IˆE�2Ý˜u Qœx¨Ñ,Ô,‰IˆE�2Øð :�Rð :Ý ð "9ÀÄð "9ð "9Ø16ð"9ð "9ñ :ô :ð :à”:˜a”= BÑ&¨¬
°1¬¸Ñ(;ˆqˆAˆAàŸ:š:­s°5©z¬z¸!ª|¨| e eÀ!ÀUÈ1ÄXÀÑOÔO‰LˆE�5Ø—:’:˜dÔ/Ñ0Ô0‰DˆAˆqà�1Š9ˆ9Øœ<Ð(;¨¬°UÔ);Ð(;Ô<ˆDŒLØœ	Ð"5 4¤;¨uÔ#5Ð"5Ô6ˆDŒIØœ+ j u¨q¡y jÔ1ˆDŒKˆKØ�QŠYˆYÝœ) D¤K°¸±Ñ;Ô;ˆDŒKØŒK˜˜A™˜˜Ô×$Ò$ T¤[°¤^Ñ4Ô4Ð4à�1Š9ˆ9Ø”< %Ò'ˆDÝ”6˜$‘<”<ð 8Ø#œ|¨DÔ1�”Ø œI dœO�”	Ø#'×#5Ò#5µb´f¸dÑ#CÔ#CÑ �˜SØ”× Ò  Ñ#Ô#Ð#Ø/2�”˜A˜B˜B” Ñ,Ý”	˜$œ+¨4¬;Ð7Ñ7Ô7Ð7àˆŒˆˆrj   c                 ó
  — |rS|                       || j                             ¦   «         | j                             ¦   «         f| j        |j        ¬¦  «        S |                       || j        | j        f| j        |j        ¬¦  «        S )zµReturns a matrix with the same sparsity structure as self,
        but with different data.  By default the structure arrays
        (i.e. .indptr and .indices) are copied.
        r.   )rN   r=   r3   r<   r/   r,   )rU   r>   r3   s      r`   rw   z_cs_matrix._with_dataH  s�   € ð
 ð 	FØ—>’> 4¨¬×):Ò):Ñ)<Ô)<Ø#'¤;×#3Ò#3Ñ#5Ô#5ð#7à(,¬
Ø(,¬
ð "ñ 4ô 4ð 4ð
 —>’> 4¨¬°t´{Ð"CØ(,¬
¸$¼*ð "ñ Fô Fð Frj   c                 ó�  — |                       |¦  «        }t          t          | j        |z   | j        z   ¦  «        }| j        |j        z   }|                      | j        | j        |j        |j        f|¬¦  «        }t          j	        | j        j
        |¬¦  «        }t          j	        ||¬¦  «        }g d¢}||v r!t          j	        |t          j        ¬¦  «        }	n.t          j	        |t          | j        |j        ¦  «        ¬¦  «        }	| j        \  }
} ||
|t          j        | j        |¬¦  «        t          j        | j        |¬¦  «        | j        t          j        |j        |¬¦  «        t          j        |j        |¬¦  «        |j        |||	¦  «         |                       |	||f| j
        ¬¦  «        }|                     ¦   «          |S )z5apply the binary operation fn to two sparse matrices.r(   r+   )r~   r’   r‘   rŽ   r�   rï   )rN   rä   r   r:   rs   rC   r<   r=   rE   r”   r/   r€   r   r,   rB   rP   r>   rr   )rU   ry   rz   rå   ÚmaxnnzrZ   r<   r=   Úbool_opsr>   rX   rY   rµ  s                r`   r‡   z_cs_matrix._binoptV  s¨  € à—’˜uÑ%Ô%ˆõ •\ 4¤;°Ñ#3°d´kÑ#AÑBÔBˆà”˜EœIÑ%ˆØ×)Ò)¨4¬;¸¼Ø%*¤\°5´=ð+Bà+1ð *ñ 3ô 3ˆ	õ ”˜$œ+Ô+°9Ð=Ñ=Ô=ˆÝ”(˜6¨Ð3Ñ3Ô3ˆà;Ð;Ð;ˆØ�ˆ>ˆ>Ý”8˜F­"¬(Ð3Ñ3Ô3ˆDˆDå”8˜F­&°´¸U¼[Ñ*IÔ*IÐJÑJÔJˆDàÔ ‰ˆˆ1Ø
ˆˆ1ˆaÝŒ:�d”k¨Ð3Ñ3Ô3ÝŒ:�d”l¨)Ð4Ñ4Ô4ØŒ9ÝŒ:�e”l¨)Ð4Ñ4Ô4ÝŒ:�e”m¨9Ð5Ñ5Ô5ØŒ:Ø�7˜Dñ	"ô 	"ð 	"ð �NŠN˜D '¨6Ð2¸$¼*ˆNÑEÔEˆØ	�Š‰	Œ	ˆ	àˆrj   c                 ó  — |j         | j         k    rt          d¦  «        ‚|                      |d¦  «        }t          j        |j        t          j        ¦  «        r¤t          j        | j         | j        ¬¦  «        }|                     t          j	        ¦  «         | 
                    ¦   «         }| j        dk    r	|d         f}d||<   |                     ¦   «         }|j        ||j        <   |                      |¦  «        S |}|S )z?
        Divide this matrix by a second sparse matrix.
        r�   Ú_eldiv_r+   r   rb   r   )r/   rM   r‡   rE   Ú
issubdtyper,   Úinexactr”   r–   ÚnanÚnonzerorR   rÏ   r>   rÐ   r±   )rU   ry   rg  r  rÐ   s        r`   Ú_divide_sparsez_cs_matrix._divide_sparsey  sß   € ð Œ;˜$œ*Ò$Ð$ÝÐ2Ñ3Ô3Ð3à�LŠL˜ 	Ñ*Ô*ˆåŒ=˜œ¥"¤*Ñ-Ô-ð 	õ
 ”(˜4œ:¨T¬ZÐ8Ñ8Ô8ˆCØ�HŠH•R”VÑÔÐØ—]’]‘_”_ˆFØŒy˜AŠ~ˆ~Ø  œ*˜�ØˆC�‰KØ—’‘	”	ˆAØœFˆC�”‰MØ—?’? 3Ñ'Ô'Ð'ð ˆCØˆJrj   )NNFr3  )T)r   )NNN©F)NN)ArO   Ú
__module__Ú__qualname__Ú__doc__r8   ri   r   rT   r|   rŠ   rŒ   rš   rž   r¢   r¥   r©   r´   r¸   r»   rÊ   ræ   rê   rÅ   rú   r   r	  r  rÄ   r  r#  r'  r.  r1  r6  r4  r+  r5  r,  r*  rW  r[  r_  rb  ri  ro  ry  rV  rd  rn  rÏ   rÂ   rx   Úpropertyr©  r«  ÚsetterrK   r‚  r¶  rˆ  rr   r¼  rw   r‡   rÎ  rì   rj   r`   r$   r$      sÞ  € € € € € ðð ðU,ð U,ð U,ð U,ðn3ð 3ð 3ð 3ð& ”oÔ-€G„Oð7-ð 7-ð 7-ð 7-ðFð ð ð""ð ""ð ""ðH "ð  "ð  "ðD!"ð !"ð !"ðF9ð 9ð 9ð9ð 9ð 9ð8ð 8ð 8ð8ð 8ð 8ð	3ð 	3ð 	3ð-ð -ð -ð.ð .ð .ðuð uð uðv
7ð 
7ð 
7ðð ð ð 4Hð 4Hð 4Hðl	ð 	ð 	ð 	ð Ô'Ô/€HÔð9ð 9ð 9ð.Oð Oð Oð ”oÔ-€G„OðOð Oð Oð ”oÔ-€G„OðFð Fð Fð Fð4 ”+Ô%€C„Kð"ð "ð "ð "ð48ð 8ð 8ðJ*ð *ð *ð<ð <ð <ð8ð 8ð 8ðHð Hð Hð
;ð ;ð ;ðB&;ð &;ð &;ð &;ðP%;ð %;ð %;ðNEð Eð Eð Eð <ð <ð <ð <ð*(ð (ð (ð(ð (ð (ð ð  ð  ð ð  ð  ð ð  ð  ð2B=ð B=ð B=ðHð ð ð&%-ð %-ð %-ðN-ð -ð -ð(F,ð F,ð F,ðX
ð 
ð 
ð 
ð ”MÔ)€E„Mðð ð ð ð" ”oÔ-€G„Oðð ð ð ð* dð *ð *ð *ñ „Xð*ð, Ô ð+¨ð +ð +ð +ñ !Ô ð+ð
)ð )ð )ð ð( Dð (ð (ð (ñ „Xð(ð Ôð- dð -ð -ð -ñ Ôð-ðð ð ð+ð +ð +ð7ð 7ð 7ð!ð !ð !ðF ”^Ô+€F„NðFð Fð Fð Fð!ð !ð !ðFð ð ð ð rj   r$   Fc                 ó¢   — ddl m}m} |r|n|}t          | ¦  «        }t	          j        |dz   ¦  «        }|dd…         } || ||f||f¬¦  «        S )z¼build diagonal csc_array/csr_array => self._csr_container

    Parameter `data` should be a raveled numpy array holding the
    values on the diagonal of the resulting sparse matrix. 
    r   )Ú	csr_arrayÚ
csr_matrixNrb   rï   )Ú_csrrÖ  r×  rH   rE   rÖ   )r>   rW   rÖ  r×  rY   r<   r=   s          r`   rÇ   rÇ   –  su   € ð ,Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ø%Ð5�	�	¨:€IåˆD‰	Œ	€AÝŒY�q˜1‘uÑÔ€FØ�S�b�SŒk€Gàˆ9�d˜G VÐ,°Q¸°FÐ;Ñ;Ô;Ð;rj   c                 ój  — | €d|}}n©t          | t          ¦  «        r?|                      |¦  «        \  }}}|dk    rt          d¦  «        ‚t	          ||¦  «        }nUt          | ¦  «        r7| dk     r| |z  } | | dz   }}|dk     s||k    rt          d|› d|› d|› �¦  «        ‚nt          d¦  «        ‚||fS )Nr   r   z$slicing with step != 1 not supportedzindex out of bounds: 0 <= z < z <= zexpected slice or scalar)r9   r?  r=   rM   rt   r   r   Ú	TypeError)ÚslÚnumrP  rQ  Ústrides        r`   rO  rO  ¦  sä   € Ø	€zØ�CˆBˆˆÝ	�B�Ñ	Ô	ð 4ØŸš C™œ‰ˆˆB�Ø�QŠ;ˆ;ÝÐCÑDÔDÐDÝ��R‰[Œ[ˆˆÝ	�2‰Œð 4Ø�Š6ˆ6Ø�#‰IˆBØ�R˜!‘VˆBˆØ�Š6ˆ6�R˜#’X�XÝÐN¸"ÐNÐNÀÐNÐNÈÐNÐNÑOÔOÐOð õ Ð2Ñ3Ô3Ð3àˆrˆ6€Mrj   rÏ  ).rÒ  Ú__all__Úwarningsr   r‚   ÚnumpyrE   Úscipy._lib._utilr   r   Ú_baser   r   r	   r
   Ú_datar   r   Ú r   r   r   r   r   r   r   r   r   Ú_indexr   Ú_sputilsr   r   r   r   r   r   r   r   r   r    r!   r"   r$   rÇ   rO  rì   rj   r`   ú<module>rç     s5  ðØ DÐ DØ
€à Ð Ð Ð Ð Ð Ø €€€à Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9à FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð ðAð Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Ð Ð Ð Ð Ð ðGð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð
}ð }ð }ð }ð }�˜}¨jñ }ô }ð }ð@,<ð <ð <ð <ð ð ð ð ð rj   