hyb
2026-01-30 7657e1b2fa251a2ea372710ad75cb395a3c0e374
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
Ë
nñúhIüãóN—dZddlmZddlmZddlZddlZddlmZm    Z    m
Z
m Z m Z m Z ddlZddlZddlmZddlmcmZddlmZmZmZddlmZdd    lmZdd
lm Z dd l!m"Z"dd l#m$Z$dd l%m&Z&m'Z'ddl(m)Z)ddl*m+Z+m,Z,m-Z-ddl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5ddl6m7Z7m8Z8ddl9m:Z:m;Z;ddl<m=Z=m>Z>m?Z?ddl@mAZAddlBmCcmDZEddlFmGZGddlHmIZIddlJmKZKddlLmCcmMZNddlOmPZPmQZQmRZRddlSmTZTmUZUddlVmWZWddlXmYZYerYddlZm[Z[ddl\m]Z]Gd„de]«Z^e^j¾Z_dd l`maZadd!lbmcZcmdZde d"Zedd#lbmfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqdd$lrmsZsnete_«Z^d%d&iZud/d'„Zv                                        d0d(„Zw    d1                    d2d)„ZxGd*„d&eGeKeI«Zy            d3                    d4d+„Zze d5d,„«Z{e d6d-„«Z{d7d.„Z{y)8z
SparseArray data structure
é)Ú annotations)ÚabcN)Ú TYPE_CHECKINGÚAnyÚCallableÚLiteralÚcastÚoverload)Úlib)Ú
BlockIndexÚIntIndexÚ SparseIndex)ÚNaT)Úfunction)ÚPerformanceWarning)Údoc)Úfind_stack_level)Úvalidate_bool_kwargÚvalidate_insert_loc)Ú astype_array)Ú"construct_1d_arraylike_from_scalarÚfind_common_typeÚmaybe_box_datetimelike)Ú is_bool_dtypeÚ
is_integerÚ is_list_likeÚis_object_dtypeÚ    is_scalarÚis_string_dtypeÚ pandas_dtype)ÚDatetimeTZDtypeÚ SparseDtype)ÚABCIndexÚ    ABCSeries)ÚisnaÚna_value_for_dtypeÚnotna)Ú    arraylike)ÚOpsMixin)ÚExtensionArray)Ú PandasObject)Úensure_wrapped_if_datetimelikeÚ extract_arrayÚsanitize_array)Úcheck_array_indexerÚunpack_tuple_and_ellipses)Úcheck_below_min_count)Úprinting)ÚSequence)ÚEnumcó—eZdZdZy)Úellipsisz...N)Ú__name__Ú
__module__Ú __qualname__ÚEllipsis©óúRH:\Change_password\venv_build\Lib\site-packages\pandas/core/arrays/sparse/array.pyr6r6[s„؉r<r6)Úspmatrix)Ú FillnaOptionsÚ NumpySorter)ÚintegerÚblock) Ú    ArrayLikeÚ    AstypeArgÚAxisÚAxisIntÚDtypeÚNpDtypeÚPositionalIndexerÚScalarÚ ScalarIndexerÚSelfÚSequenceIndexerÚnpt)ÚSeriesÚklassÚ SparseArraycóʗ    tj|j|jj¬«S#t
$r"tj|j«cYSwxYw)a]
    Create a 0-dim ndarray containing the fill value
 
    Parameters
    ----------
    arr : SparseArray
 
    Returns
    -------
    fill_value : ndarray
        0-dim ndarray with just the fill value.
 
    Notes
    -----
    coerce fill_value to arr dtype if possible
    int64 SparseArray can have NaN as fill_value if there is no missing
    ©Údtype)ÚnpÚasarrayÚ
fill_valuerTÚsubtypeÚ
ValueError)Úarrs r=Ú    _get_fillr[„sH€ð$*܏z‰z˜#Ÿ.™.°·    ±    ×0AÑ0AÔBÐBøÜ ò*܏z‰z˜#Ÿ.™.Ó)Ò)ð*ús‚47·(A"Á!A"c    óª—|jd«r|dd}|jj}|jj}||k7rlt||g«}t    ||j
«}t    ||j
«}|j |d¬«}|j |d¬«}|j}n|}d}|jjdk(s|jjdk(r”tjd¬    «5||j«|j««}    |t|«t|««}
ddd«|jjdk(r|j} nð|j} nâ|jj|j«retjd¬    «5||j|j«}    |t|«t|««}
ddd«|j} nX|dd
k(r    ||}}|d d}|d vrd|d k(r_d|›d} |jjtj «} |jjtj «}t"}n d|›d|›} |j} |j}|dvrS|dk(j%«r@|jj&dvr(d|›d} | j d«} |j d«}t)t*| «}tjd¬    «5|| |j|j
||j|j
«\}    } }
ddd«|dk(r,t-|    d 
d|¬«t-||    d | |
d |¬«fS|€     j}t-|     
|¬«S#1swYŒpxYw#1swYŒÌxYw#1swYŒrxYw)a4
    Perform a binary operation between two arrays.
 
    Parameters
    ----------
    left : Union[SparseArray, ndarray]
    right : Union[SparseArray, ndarray]
    op : Callable
        The binary operation to perform
    name str
        Name of the callable.
 
    Returns
    -------
    SparseArray
    Ú__ééþÿÿÿF©ÚcopyNrÚignore©ÚallÚré)ÚandÚorÚxorÚboolÚsparse_Ú_uint8Ú_)ÚfloordivÚmodÚiuÚ_float64Úfloat64ÚdivmodrS)Ú
startswithrTrXrr"rWÚastypeÚsp_indexÚngapsrUÚerrstateÚto_denser[ÚequalsÚ    sp_valuesÚviewÚuint8rjÚanyÚkindÚgetattrÚsplibÚ _wrap_result)ÚleftÚrightÚopÚnameÚltypeÚrtyperXrTÚ result_dtypeÚresultÚfillÚindexÚopnameÚleft_sp_valuesÚright_sp_valuesÚ    sparse_ops                r=Ú_sparse_array_opr‘œsl€ð& ‡tÔàAbˆzˆð J‰J× Ñ €EØ K‰K× Ñ €Eà ‚~Ü" E¨5 >Ó2ˆÜ˜G T§_¡_Ó5ˆÜ˜G U×%5Ñ%5Ó6ˆà{‰{˜5 uˆ{Ó-ˆØ— ‘ ˜U¨ Ó/ˆØ— ‘ ‰àˆð€Là ‡}}×јaÒ 5§>¡>×#7Ñ#7¸1Ò#<Ü [‰[˜XÔ &ñ    9Ù˜Ÿ ™ ›¨¯©Ó)9Ó:ˆFÙ”i “o¤y°Ó'7Ó8ˆD÷    9ð =‰=× Ñ  !Ò #Ø—M‘MŠEà—N‘NŠEØ     ‰×    Ñ    ˜eŸn™nÔ    -Ü [‰[˜XÔ &ñ    9Ù˜Ÿ™¨¯©Ó8ˆFÙ”i “o¤y°Ó'7Ó8ˆD÷    9ð— ‘ Šà ‰7cŠ>Ø %ˆDؘ˜8ˆDà Ð'Ñ '¨E°VªOؘt˜f FÐ+ˆFà!Ÿ^™^×0Ñ0´·±Ó:ˆNØ#Ÿo™o×2Ñ2´2·8±8Ó<ˆO܉Là˜t˜f A e WÐ-ˆFØ!Ÿ^™^ˆNØ#Ÿo™oˆOð Ð'Ñ 'ؘ!‘× Ñ Ô"Ø—
‘
—‘ 4Ñ'ð˜t˜f HÐ-ˆFØ+×2Ñ2°9Ó=ˆNØ-×4Ñ4°YÓ?ˆOäœE 6Ó*ˆ    ä [‰[˜XÔ &ñ    Ù"+ØØ— ‘ Ø—‘ØØ—‘Ø× Ñ ó #Ñ ˆFE˜4÷    ð ˆxÒô
˜˜v a™y¨%°°a±À Ô MÜ ˜˜v a™y¨%°°a±À Ô Mð
ð    
ð
ÐØ—|‘|ˆ ä ˜˜f e¨T¸Ô FÐF÷    9ñ    9ú÷    9ñ    9ú÷@    ð    ús%ÄAN/Æ99N<Ì:O    Î/N9Î<OÏ    Ocó¶—|jd«r|dd}|dvrt}tj|«}t    |«r t|«}t ||||¬«S)z.
    wrap op result to have correct dtype
    r]r^r_)ÚeqÚneÚltÚgtÚleÚge)Ú sparse_indexrWrT)rtrjr Úitem_from_zerodimrrQ)r†Údatar™rWrTs     r=r‚r‚sa€ð  ‡tÔàAbˆzˆà Ð3Ñ3܈ä×&Ñ& zÓ2€JäUÔä˜*Ó%ˆ
Ü Ø ˜<°JÀeô ðr<c󨇗eZdZUdZdZej eg«zZded<ded<ded<                    dU                            dVd „Z    e
                                dWd „«Z e
dXd „«Z     dY                    dZd„Z d[d„Ze
d    d
dœd\d„«Ze
d„«Zed]d„«Zed^d„«Zed_d„«Zed„«Zej,d[d„«Zed`d„«Zed^d„«Zdad„Zedbd„«Zdbd„Zedad„«Zedcd„«Zedad„«Zddd „Zd    d    d!d"œ                                    deˆfd#„Z                 df                            dgˆfd$„ Z!dhdid%„Z"d&„Z#e$e%jL«    dj            dkd'„«Z&ddd(„Z'd)„Z(    dl            dmd*„Z)dldnd+„Z*e+dod,„«Z,e+                dpd-„«Z,                dqd.„Z,d/„Z-d
d    d0œdrd1„Z.dsd^d2„Z/ddd3„Z0        dt                            dud4„Z1ddd5„Z2e
dvd6„«Z3dwdxd7„Z4dsddd8„Z5d^d9„Z6d:„Z7d[d;„Z8dyd<„Z9d!d
d=œ                    dzd>„Z:dsd?„Z;d{d|d@„Z<            d}                            d~dA„Z=d{ddB„Z>d{d€dC„Z?d    d!dDœddE„Z@d    d!dDœddF„ZAd‚dG„ZBdƒdH„ZCdld„dI„ZDdld„dJ„ZEeFjŽeHj’fZJd…dK„ZKdL„ZLd†dM„ZMeMZNd†dN„ZOd†dO„ZPd†dP„ZQd†dQ„ZRd†dR„ZSd‡dS„ZTdˆd‰dT„ZUˆxZVS)ŠrQaÞ
    An ExtensionArray for storing sparse data.
 
    Parameters
    ----------
    data : array-like or scalar
        A dense array of values to store in the SparseArray. This may contain
        `fill_value`.
    sparse_index : SparseIndex, optional
    fill_value : scalar, optional
        Elements in data that are ``fill_value`` are not stored in the
        SparseArray. For memory savings, this should be the most common value
        in `data`. By default, `fill_value` depends on the dtype of `data`:
 
        =========== ==========
        data.dtype  na_value
        =========== ==========
        float       ``np.nan``
        int         ``0``
        bool        False
        datetime64  ``pd.NaT``
        timedelta64 ``pd.NaT``
        =========== ==========
 
        The fill value is potentially specified in three ways. In order of
        precedence, these are
 
        1. The `fill_value` argument
        2. ``dtype.fill_value`` if `fill_value` is None and `dtype` is
           a ``SparseDtype``
        3. ``data.dtype.fill_value`` if `fill_value` is None and `dtype`
           is not a ``SparseDtype`` and `data` is a ``SparseArray``.
 
    kind : str
        Can be 'integer' or 'block', default is 'integer'.
        The type of storage for sparse locations.
 
        * 'block': Stores a `block` and `block_length` for each
          contiguous *span* of sparse values. This is best when
          sparse data tends to be clumped together, with large
          regions of ``fill-value`` values between sparse values.
        * 'integer': uses an integer to store the location of
          each sparse value.
 
    dtype : np.dtype or SparseDtype, optional
        The dtype to use for the SparseArray. For numpy dtypes, this
        determines the dtype of ``self.sp_values``. For SparseDtype,
        this determines ``self.sp_values`` and ``self.fill_value``.
    copy : bool, default False
        Whether to explicitly copy the incoming `data` array.
 
    Attributes
    ----------
    None
 
    Methods
    -------
    None
 
    Examples
    --------
    >>> from pandas.arrays import SparseArray
    >>> arr = SparseArray([0, 0, 1, 2])
    >>> arr
    [0, 0, 1, 2]
    Fill: 0
    IntIndex
    Indices: array([2, 3], dtype=int32)
    Ú sparse_arrayrÚ _sparse_indexú
np.ndarrayÚ_sparse_valuesr"Ú_dtypeNFcó:—|€t|t«r |j}t|t|««r6|€ |j}|€ |j}|€ |j
}|j }t|t«r    tj|«}t|t«r|€ |j}|j}t|«rftjdt|«j›dt t#«¬«|€d}n |j$}t'||d¬«}|j
}| t|«}|€t)j*g|¬«}    t-|d¬«}|r|j7«}|€.|€ |j
n|}|€t(j8}n t;|«}t|t|««r1|€/|j<}t)j4|j |¬«}    n|€Ñt?|d¬«}t|t(j@«s–t|j
tB«rgtjd    |j
›d
tDt#«¬«t)j4|d ¬«}|tFurt)jHd d «}t)j4|«}tK||||¬«\}    }}nGt)j4||¬«}    tM|    «|jNk7rtQdt|    «›d«‚||_|    |_)t|    j
|«|_*y#t$rt|«}YŒ²wxYw#t.$rK|€Dt)j
t0«}t)j2t)j4||¬««}n‚YŒ:wxYw)Nz Constructing z\ with scalar data is deprecated and will raise in a future version. Pass a sequence instead.©Ú
stacklevelrfrS)rŒT)Ú extract_numpyzCreating SparseArray from z^ data loses timezone information. Cast to object before sparse to retain timezone information.zdatetime64[ns]rÚns)rrWrTzNon array-like type z' must have the same length as the index)+Ú
isinstancer"rWÚtypervrTr{ÚstrÚconstruct_from_stringÚ    TypeErrorr rXrÚwarningsÚwarnr7Ú FutureWarningrÚlengthrrUÚarrayr.rYÚobjectÚ
atleast_1drVraÚnanr&ržr-Úndarrayr!Ú UserWarningrÚ
datetime64Ú _make_sparseÚlenÚnpointsÚAssertionErrorr r¡)
Úselfr›r™rWrrTrar¹Úfill_value_dtypeÚ sparse_valuess
          r=Ú__init__zSparseArray.__init__lsL€ð Ð ¤*¨U´KÔ"@Ø×)Ñ)ˆJä dœD ›JÔ 'àÐ#Ø#Ÿ}™} ØÐ!Ø!Ÿ_™_
؈}؟
™
à—>‘>ˆDô eœSÔ !ð ,Ü#×9Ñ9¸%Ó@ô eœ[Ô )ØÐ!Ø"×-Ñ-
Ø—M‘MˆEä TŒ?Ü M‰Mؤ T£
× 3Ñ 3Ð4ð5OðOäÜ+Ó-õ     ð Ð#Ø‘à&×-Ñ-ä5°d¸GÈ4ÔPˆDØ—J‘JˆEà Ð Ü  Ó'ˆEð ˆ<ô—8‘8˜B eÔ,ˆDð        Ü! $¨dÔ3ˆDñ à—9‘9“;ˆDà Ð Ø-2¨]˜tŸzšzÀÐ ØÐ'ÜŸV™V‘
ä/Ð0@ÓA
ä dœD ›JÔ '¨LÐ,@Ø×-Ñ-ˆLôŸJ™JØ—‘ eôŠMðÐ !Ü  °TÔ:ˆDܘd¤B§J¡JÔ/ä˜dŸj™j¬/Ô:Ü—M‘MØ4°T·Z±Z°LðAAðAô$Ü#3Ó#5õ ôŸ:™: dÐ2BÔCDØ!¤SÑ(Ü%'§]¡]°5¸$Ó%?˜
Ü—z‘z $Ó'Ü6BðØØ%Øô7Ñ 3ˆM˜<©ôŸJ™J t°5Ô9ˆMܐ=Ó! \×%9Ñ%9Ò9Ü$Ø*¬4° Ó+>Ð*?ð@8ð8óðð*ˆÔØ+ˆÔÜ! -×"5Ñ"5°zÓBˆ øôMò ,Ü$ UÓ+“ð ,ûôNò    ðˆ}ÜŸ™¤Ó(Ü—}‘}¤R§Z¡Z°¸EÔ%BÓC‘àòð     ús%Á;L+Å MÌ+MÍMÍANÎNcóZ—tj|«}||_||_||_|S©N)r±Ú__new__ržr r¡)Úclsrr™rTÚnews     r=Ú _simple_newzSparseArray._simple_newñs.€ôn‰n˜SÓ!ˆØ(ˆÔØ)ˆÔ؈Œ
؈
r<có€—|j\}}|dk7rtd|›d«‚|j«}|j«|j}|j
}t jd|j¬«j«}t|j|«}t||«}|j|||«S)a‚
        Create a SparseArray from a scipy.sparse matrix.
 
        Parameters
        ----------
        data : scipy.sparse.sp_matrix
            This should be a SciPy sparse matrix where the size
            of the second dimension is 1. In other words, a
            sparse matrix with a single column.
 
        Returns
        -------
        SparseArray
 
        Examples
        --------
        >>> import scipy.sparse
        >>> mat = scipy.sparse.coo_matrix((4, 1))
        >>> pd.arrays.SparseArray.from_spmatrix(mat)
        [0.0, 0.0, 0.0, 0.0]
        Fill: 0.0
        IntIndex
        Indices: array([], dtype=int32)
        rfz''data' must have a single column, not 'ú'rrS) ÚshaperYÚtocscÚ sort_indicesr›ÚindicesrUr°rTÚitemr"r rÄ)    rÂr›r¯ÚncolrZÚidxÚzerorTrŒs             r=Ú from_spmatrixzSparseArray.from_spmatrixþs¤€ð4—z‘z‰ ˆà 1Š9ÜÐFÀtÀfÈAÐNÓOÐ Oðz‰z‹|ˆØ ×ÑÔØi‰iˆØl‰lˆäx‰x˜ §¡Ô+×0Ñ0Ó2ˆÜ˜CŸI™I tÓ,ˆÜ˜ Ó%ˆà‰˜s E¨5Ó1Ð1r<cóž—|jjdk(r/|durtj|j«S|jS|dur$t j dtt«¬«|j}|€t|jjjdk(r|turtjd«}    tj|jjt|««}tj$|j&||¬«}|j||jj(<|S#t $r    t"}YŒXwxYw)    NrTFaSStarting with NumPy 2.0, the behavior of the 'copy' keyword has changed and passing 'copy=False' raises an error when returning a zero-copy NumPy array is not possible. pandas will follow this behavior starting with pandas 3.0.
This conversion to NumPy requires a copy, but 'copy=False' was passed. Consider using 'np.asarray(..)' instead.r£ÚMrrS)rvrwrUr°r{r¬r­r®rrWrTrrr¶Ú result_typer¨r«r±ÚfullrÇrÊ)r»rTrarWÚouts     r=Ú    __array__zSparseArray.__array__*s€ð =‰=× Ñ  !Ò #àt‰|Ü—x‘x §¡Ó/Ð/à—~‘~Ð%à 5‰=Ü M‰Mð2ô Ü+Ó-õ     ð—_‘_ˆ
à ˆ=ð~‰~×#Ñ#×(Ñ(¨CÒ/ð¤Ñ$ä!#§¡¨uÓ!5Jð ÜŸ™ t§~¡~×';Ñ';¼TÀ*Ó=MÓNôg‰gd—j‘j *°EÔ:ˆØ%)§^¡^ˆˆDM‰M× !Ñ !Ñ"؈
øô ò Ü’ð úsÃ3D:Ä:E Å E có—d}t|«‚)Nz8SparseArray does not support item assignment via setitem)r«)r»ÚkeyÚvalueÚmsgs    r=Ú __setitem__zSparseArray.__setitem__Us€ðIˆÜ˜‹nÐr<©rTracó—|||¬«S©NrSr;)rÂÚscalarsrTras    r=Ú_from_sequencezSparseArray._from_sequence\s€á7 %Ô(Ð(r<có*—|||j¬«SrÝrS)rÂÚvaluesÚoriginals   r=Ú_from_factorizedzSparseArray._from_factorized`s€á6 §¡Ô0Ð0r<có—|jS)zX
        The SparseIndex containing the location of non- ``fill_value`` points.
        )rž©r»s r=rvzSparseArray.sp_indexgs€ð
×!Ñ!Ð!r<có—|jS)a
        An ndarray containing the non- ``fill_value`` values.
 
        Examples
        --------
        >>> from pandas.arrays import SparseArray
        >>> s = SparseArray([0, 0, 1, 0, 2], fill_value=0)
        >>> s.sp_values
        array([1, 2])
        )r rås r=r{zSparseArray.sp_valuesns€ð×"Ñ"Ð"r<có—|jSrÀ)r¡rås r=rTzSparseArray.dtype|s €à{‰{Ðr<có.—|jjS)aÚ
        Elements in `data` that are `fill_value` are not stored.
 
        For memory savings, this should be the most common value in the array.
 
        Examples
        --------
        >>> ser = pd.Series([0, 0, 2, 2, 2], dtype="Sparse[int]")
        >>> ser.sparse.fill_value
        0
        >>> spa_dtype = pd.SparseDtype(dtype=np.int32, fill_value=2)
        >>> ser = pd.Series([0, 0, 2, 2, 2], dtype=spa_dtype)
        >>> ser.sparse.fill_value
        2
        )rTrWrås r=rWzSparseArray.fill_value€s€ð"z‰z×$Ñ$Ð$r<cóN—t|jj|«|_yrÀ)r"rTrXr¡)r»rØs  r=rWzSparseArray.fill_value“s€ä! $§*¡*×"4Ñ"4°eÓ<ˆ r<có:—t|jt«ryy)zW
        The kind of sparse index for this array. One of {'integer', 'block'}.
        rArB)r§rvr rås r=rzSparseArray.kind—s€ô
d—m‘m¤XÔ .Øàr<có:—|j}t|«}||SrÀ)r{r')r»Úsp_valsÚmasks   r=Ú_valid_sp_valueszSparseArray._valid_sp_values¡s€à—.‘.ˆÜW‹~ˆØt‰}Ðr<có.—|jjSrÀ)rvr¯rås r=Ú__len__zSparseArray.__len__§s€Ø}‰}×#Ñ#Ð#r<có.—|jjSrÀ)r¡Ú_is_na_fill_valuerås r=Ú_null_fill_valuezSparseArray._null_fill_valueªs€à{‰{×,Ñ,Ð,r<cóN—|jr t|«S|j|k(SrÀ)rór%rW)r»rWs  r=Ú_fill_value_matcheszSparseArray._fill_value_matches®s%€Ø ×  Ò  Ü˜
Ó#Ð #à—?‘? jÑ0Ð 0r<có\—|jj|jjzSrÀ)r{Únbytesrvrås r=r÷zSparseArray.nbytes´s!€à~‰~×$Ñ$ t§}¡}×';Ñ';Ñ;Ð;r<có\—|jj|jjz S)zú
        The percent of non- ``fill_value`` points, as decimal.
 
        Examples
        --------
        >>> from pandas.arrays import SparseArray
        >>> s = SparseArray([0, 0, 1, 1, 1], fill_value=0)
        >>> s.density
        0.6
        )rvr¹r¯rås r=ÚdensityzSparseArray.density¸s#€ð}‰}×$Ñ$ t§}¡}×';Ñ';Ñ;Ð;r<có.—|jjS)zë
        The number of non- ``fill_value`` points.
 
        Examples
        --------
        >>> from pandas.arrays import SparseArray
        >>> s = SparseArray([0, 0, 1, 1, 1], fill_value=0)
        >>> s.npoints
        3
        )rvr¹rås r=r¹zSparseArray.npointsÆs€ð}‰}×$Ñ$Ð$r<cóž—tt|j«}|jr9t|«j    t |j «|j|«Stjt|«dtj¬«}t |j «||jj<t|«|d|¬«S)NFrS©rWrT) r"rjrór¨rÄr%r{rvrUrÓr¸Úbool_rÊ)r»rTrís   r=r%zSparseArray.isnaÖs‘€ôœD $×"7Ñ"7Ó8ˆØ ×  Ò  Ü˜“:×)Ñ)¬$¨t¯~©~Ó*>ÀÇ Á ÈuÓUÐ U܏w‰w”s˜4“y %¬r¯x©xÔ8ˆÜ&*¨4¯>©>Ó&:ˆˆT]‰]× "Ñ "Ñ#ØŒtD‹z˜$¨5¸Ô>Ð>r<T)ÚlimitÚ
limit_arearacó*•—t‰|||||¬«S)N)Úmethodrþrÿra)ÚsuperÚ_pad_or_backfill)r»rrþrÿraÚ    __class__s     €r=rzSparseArray._pad_or_backfillàs%ø€ô‰wÑ'Ø °:ÀDð(ó
ð    
r<cóf•—|€|| | td«‚|t‰|    ||¬«Stjt |j «||j «}|jr"t|jj|¬«}n |j}|j||j|«S)aï
        Fill missing values with `value`.
 
        Parameters
        ----------
        value : scalar, optional
        method : str, optional
 
            .. warning::
 
               Using 'method' will result in high memory use,
               as all `fill_value` methods will be converted to
               an in-memory ndarray
 
        limit : int, optional
 
        copy: bool, default True
            Ignored for SparseArray.
 
        Returns
        -------
        SparseArray
 
        Notes
        -----
        When `value` is specified, the result's ``fill_value`` depends on
        ``self.fill_value``. The goal is to maintain low-memory use.
 
        If ``self.fill_value`` is NA, the result dtype will be
        ``SparseDtype(self.dtype, fill_value=value)``. This will preserve
        amount of memory used before and after filling.
 
        When ``self.fill_value`` is not NA, the result dtype will be
        ``self.dtype``. Again, this preserves the amount of memory used.
        z(Must specify one of 'method' or 'value'.)rrþ©rW) rYrÚfillnarUÚwherer%r{rór"rTrXrÄrž)r»rØrrþraÚ
new_valuesÚ    new_dtypers       €r=rzSparseArray.fillnaîs£ø€ðT ˆN˜u˜}Ø Ð  5Ð#4äÐGÓHÐ Hà Ð Ü‘7‘>¨°u>Ó=Ð =ôŸ™¤$ t§~¡~Ó"6¸¸t¿~¹~ÓNˆJà×$Ò$ä'¨¯
©
×(:Ñ(:ÀuÔM‘    à ŸJ™J    à×Ñ 
¨D×,>Ñ,>À    ÓJÐJr<c    ó6—t|«r|dk(r|j«St|«r|jj}t j ||jj«}||jjk7r&|jt||j««}n|}|j|gtt|«t|««z|j¬«}|dkDr    |}|d| }n|t|«d}|}|j||g«S)NrrS)r¸rar%rTÚna_valuerUrÒrXrur"rWrßÚminÚabsÚ_concat_same_type)r»ÚperiodsrWrXrZÚemptyÚaÚbs        r=ÚshiftzSparseArray.shift+sõ€Ü4Œy˜G qšLØ—9‘9“;Ð ä 
Ô ØŸ™×,Ñ,ˆJä—.‘. ¨T¯Z©Z×-?Ñ-?Ó@ˆà d—j‘j×(Ñ(Ò (à—+‘+œk¨'°4·?±?ÓCÓD‰CàˆCà×#Ñ#Ø ˆLœ3œs 7›|¬S°«YÓ7Ñ 7¸s¿y¹yð$ó
ˆð QŠ;؈AؐIgX‰Aà”C˜“LNÐ#ˆA؈AØ×$Ñ$ a¨ VÓ,Ð,r<có:—t|«dk(s"|jjt|«k(ry|jj}t|«r|ddkDrytj
t    j |«df}||dkDj«dzS)zh
        Get the location of the first fill value.
 
        Returns
        -------
        int
        réÿÿÿÿr^rf)r¸rvr¹rÊrUÚr_ÚdiffÚargmax)r»rÊrs   r=Ú_first_fill_value_locz!SparseArray._first_fill_value_locFs…€ô ˆt‹9˜Š>˜TŸ]™]×2Ñ2´c¸$³iÒ?Øà—-‘-×'Ñ'ˆÜ7Œ|˜w q™z¨Aš~Øô
u‰u”R—W‘W˜WÓ% qÐ(Ñ)ˆØ˜˜q™×(Ñ(Ó*Ñ+¨aÑ/Ð/r<có¢—tj|«}tj|j««}tj|||¬«S)N)Úkeeprí)rUrVr%ÚalgosÚ
duplicated)r»rrárís    r=rzSparseArray.duplicated[s;€ô—‘˜DÓ!ˆÜz‰z˜$Ÿ)™)›+Ó&ˆÜ×Ñ ¨T¸Ô=Ð=r<có†—tj|j«}t|j«t|«k7r\|j    «}ttj|jd|««}t j |||j«}t|«j||j¬«SrÝ) rÚuniquer{r¸rrUÚinsertrWr¨rßrT)r»ÚuniquesÚfill_locÚ
insert_locs    r=r zSparseArray.uniquecs‹€Ü—,‘,˜tŸ~™~Ó.ˆÜ ˆt~‰~Ó ¤# d£)Ò +Ø×1Ñ1Ó3ˆHôœUŸ\™\¨$¯.©.¸¸(Ð*CÓDÓEˆJÜ—i‘i ¨°T·_±_ÓEˆGܐD‹z×(Ñ(¨¸¿
¹
Ð(ÓCÐCr<cóD—tj|«|jfSrÀ)rUrVrWrås r=Ú_values_for_factorizez!SparseArray._values_for_factorizeqs€äz‰z˜$Ó §¡Ð0Ð0r<có’—tjtj|«|¬«\}}t    ||j
¬«}||fS)N)Úuse_na_sentinelrS)rÚ    factorizerUrVrQrT)r»r(Úcodesr"Ú
uniques_sps     r=r)zSparseArray.factorizeusA€ôŸ™Ü J‰JtÓ ¨oô
‰ˆˆwô! °·
±
Ô;ˆ
ؐjРРr<cóò—ddlm}m}tj|j
|¬«\}}}|j j}|dkDrŠ|jr|s||jr t|«n||jk(}|j«r||xx|z cc<n8tj|d|j«}tj|d|«}t|t«s    ||«}    n|}    |||    d¬«S)a
        Returns a Series containing counts of unique values.
 
        Parameters
        ----------
        dropna : bool, default True
            Don't include counts of NaN, even if NaN is in sp_values.
 
        Returns
        -------
        counts : Series
        r)ÚIndexrO)ÚdropnaF)rŒra)Úpandasr-rOrÚvalue_counts_arrayliker{rvrwrór%rWr~rUr!r§r#)
r»r.r-rOÚkeysÚcountsrmÚfcountsrírŒs
          r=Ú value_countszSparseArray.value_counts„sɀ÷    
ô
 ×6Ñ6°t·~±~ÈfÔU‰ˆˆfaØ—-‘-×%Ñ%ˆØ QŠ; × 5Ò 5¹VØ!%×!6Ò!6”4˜”:¸DÀDÇOÁOÑ<SˆD؏x‰xŒzؐt“  Ñ'” ô—y‘y  q¨$¯/©/Ó:ÜŸ™ 6¨1¨gÓ6ä˜$¤Ô)Ù˜$“K‰EàˆEِf E°Ô6Ð6r<có—yrÀr;©r»r×s  r=Ú __getitem__zSparseArray.__getitem__¯s€à r<có—yrÀr;r6s  r=r7zSparseArray.__getitem__³s€ð
     r<cóæ—t|t«rt|«}|tur t    d«‚t |«r|j |«St|t«r|j«|}nft|t«r~|j|jdk(r |j€dn |j}|dkr|t|«z }|j€ t|«n |j}|dkr|t|«z }|jj}tj ||k\||kz«}|j"|}||j%«}|dkDr||z}tt't|««|«}    t)|    ||j*«}
t-|«j/||
|j0«Stj2t|«tj4¬«|}|j7|«St9|«s t;d«‚t|t<«r    t?|«rétA|jB«r2|j7|jj|j"«S|jBs%|j7|jj«St|«} tjD| dtjF¬«} d| |jj<|j7tj2| «| «StjH|«}tK||«}tMjN|«rZtQtjR|«}|j7tj2t|«tj4¬«|«StU|d«r|j7|«St    d    |›d
«‚t-|«||j*¬ «S) NzCannot slice with EllipsisrfrrSzuonly integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indicesTFrðzCannot slice with 'rÆ©r)+r§Útupler0r:rYrÚ _get_val_atryÚsliceÚstepÚstartr¸ÚstoprvrÊrUÚ flatnonzeror{raÚrangeÚmake_sparse_indexrr¨rÄrTÚarangeÚint32ÚtakerÚ
IndexErrorrQrr%rWrÓrýrVr/ÚcomÚis_bool_indexerr    r´Úhasattr) r»r×Ú
data_slicer?ÚendrÊÚ    keep_indsrìrvÚnew_lenÚ new_sp_indexÚnrís              r=r7zSparseArray.__getitem__ºs€ô cœ5Ô !Ü+¨CÓ0ˆCØ”h‰Ü Ð!=Ó>Ð>ä cŒ?Ø×#Ñ# CÓ(Ð (Ü ˜œUÔ #🙛¨Ñ-ŠJÜ ˜œUÕ #àx‰xР3§8¡8¨q£=Ø ŸY™YÐ.™°C·I±IØ˜1’9ØœS ›YÑ&Eà#&§8¡8Ð#3”c˜$”i¸¿¹Ø˜’7Øœ3˜t›9Ñ$CàŸ-™-×/Ñ/ÜŸN™N¨G°uÑ,<ÀÈ3ÁÑ+OÓP    ØŸ.™.¨Ñ3à" 9Ñ-×2Ñ2Ó4ð ˜1’9Ø Ñ%Hôœe¤C¨£IÓ.¨sÑ3Ó4Ü0°¸(ÀDÇIÁIÓN ܘD“z×-Ñ-¨g°|ÀTÇZÁZÓPÐPäŸ)™)¤C¨£I´R·X±XÔ>¸sÑCØ—y‘y Ó)Ð)ä˜cÔ"ôðLóð ô ˜#œ{Õ+ô
! Ô%ܘCŸN™NÔ+Ø#Ÿy™y¨¯©×)=Ñ)=¸c¿m¹mÑ)LÓMÐMØŸ>š>Ø#Ÿy™y¨¯©×)=Ñ)=Ó>Ð>ܘD›    AÜŸ7™7 1 d´"·(±(Ô;DØ16D˜Ÿ™×-Ñ-Ñ.ØŸ9™9¤R§Y¡Y¨q£\°$Ñ%7Ó8Ð8äŸ*™* S›/Cä% d¨CÓ0ˆCä×"Ñ" 3Ô'äœ2Ÿ:™: sÓ+Ø—y‘y¤§¡¬3¨s«8¼2¿8¹8Ô!DÀSÑ!IÓJÐJܘ˜iÔ(Ø—y‘y “~Ð%ä Ð#6°s°e¸1Ð!=Ó>Ð>àŒtD‹z˜*¨4¯9©9Ô5Ð5r<cóæ—t|t|««}|jj|«}|dk(r |jS|j
|}t ||j
j«}|S)Nr)rr¸rvÚlookuprWr{rrT)r»ÚlocÚsp_locÚvals    r=r<zSparseArray._get_val_ats`€Ü! #¤s¨4£yÓ1ˆà—‘×%Ñ% cÓ*ˆØ RŠ<Ø—?‘?Ð "à—.‘. Ñ(ˆCÜ(¨¨d¯n©n×.BÑ.BÓCˆC؈Jr<)Ú
allow_fillrWcóŠ—t|«rtd|›d«‚tj|tj¬«}d}|j
dk(r$tj gd¬«}|j}n'|r|j||¬«}n|j|«St|«||j|j|¬«S)Nz*'indices' must be an array, not a scalar 'z'.rSrr±r)rWrrT) rrYrUrVrEÚsizer°rTÚ_take_with_fillÚ_take_without_fillr¨rWr)r»rÊrVrWrTrŠs      r=rFzSparseArray.take#s«€Ü WÔ ÜÐIÈ'ÈÐRTÐUÓVÐ VÜ—*‘*˜W¬B¯H©HÔ5ˆàˆØ <‰<˜1Ò Ü—X‘X˜b¨Ô1ˆFØ—J‘J‰EÙ Ø×)Ñ)¨'¸jÐ)ÓI‰Fà×*Ñ*¨7Ó3Ð 3àŒtD‹zØ ˜tŸ™°T·Y±YÀeô
ð    
r<cóŽ—|€|jj}|j«dkr td«‚|j    «t |«k\r t d«‚t |«dk(rq|dk(j«rStj|jt|««}tj||¬«}|j|«|St d«‚|jj|«}|dk(}|dk(|z}|jj dk(rR|j«rBtj"|j$|j&|jj(¬«}|S|jj dk(rftj|jj(t|««}tj"|j$||¬«}|j&||<|S|jj+|«}||dk}    ||dk}
|j} |    j-«rItj| t|j&««} |j/| «}|j&||<|
j-«r5tj| t|««} |j/| «}|||<|S)NrzKInvalid value in 'indices'. Must be between -1 and the length of the array.ú!out of bounds value in 'indices'.rrSú.cannot do a non-empty take from an empty axes.rü)rTr r rYÚmaxr¸rGrdrUrÒr{r¨Ú
empty_liker‹rvÚ lookup_arrayr¹rÓrÇrWrXrFr~ru) r»rÊrWrTÚtakenÚ
sp_indexerÚnew_fill_indicesÚold_fill_indicesr¡Úm0Úm1rÒs             r=rYzSparseArray._take_with_fill5sX€Ø Ð ØŸ™×,Ñ,ˆJà ;‰;‹=˜2Ò Üð/óð ð
;‰;‹=œC ›IÒ %ÜÐ@ÓAÐ Aä ˆt‹9˜Š>à˜2‘ ×"Ñ"Ô$ÜŸ™ t§~¡~´t¸JÓ7GÓHÜŸ ™  g°UÔ;Ø—
‘
˜:Ô&ؐ ä Ð!QÓRÐRð
—]‘]×/Ñ/°Ó8ˆ
Ø" b™=ÐØ&¨"Ñ,Ð1AÐ0AÑAÐà =‰=×  Ñ   AÒ %Ð*:×*>Ñ*>Ô*@ä—G‘GØ× Ñ ¨T¯_©_ÀDÇJÁJ×DVÑDVôˆEð@ˆ ð9]‰]× "Ñ " aÒ 'ä—^‘^ D§J¡J×$6Ñ$6¼¸ZÓ8HÓIˆFÜ—G‘G˜J×,Ñ,¸È6ÔRˆEØ&*§o¡oˆEÐ"Ñ #ð0ˆ ð-—N‘N×'Ñ'¨
Ó3ˆEðÐ,Ñ-°Ñ1ˆBØÐ,Ñ-°Ñ1ˆBàŸ+™+ˆKàv‰vŒxÜ Ÿn™n¨[¼$¸t¿¹Ó:OÓP ØŸ ™  [Ó1Ø*.¯/©/Ð&Ñ'àv‰vŒxÜ Ÿn™n¨[¼$¸zÓ:JÓK ØŸ ™  [Ó1Ø*4Ð&Ñ'àˆ r<có\—|dk}t|«}|j«|k\s|j«| kr|dk(r td«‚td«‚|j    «r|j «}||xx|z cc<|j j|«}|dk7}|j||}tj|«jtjd¬«}tt|«||j¬«}t|«j!|||j"¬«S)    Nrr]r\rFr`r:rS)r¸r^r rGr~rarvr`r{rUrArurErCrr¨rÄrT)    r»rÊÚto_shiftrPrbÚ
value_maskÚ new_sp_valuesÚ value_indicesrOs             r=rZzSparseArray._take_without_fillwsý€Ø˜Q‘;ˆä ‹Iˆà K‰K‹M˜QÒ  G§K¡K£M°Q°BÒ$6ؐAŠvÜ Ð!QÓRÐRÜÐ@ÓAÐ Aà <‰<Œ>Ø—l‘l“nˆGØ HÓ  Ñ "Ó à—]‘]×/Ñ/°Ó8ˆ
Ø 2Ñ%ˆ
ØŸ™ z°*Ñ'=Ñ>ˆ 䟙 zÓ2×9Ñ9¼"¿(¹(ÈÐ9ÓOˆ ä(¬¨W«°}È4Ï9É9ÔUˆ ܐD‹z×%Ñ% m°\ÈÏÉÐ%ÓTÐTr<cóð—d}tj|tt«¬«t    j
|«}t    j
||j j¬«j|||«S)Nz(searchsorted requires high memory usage.r£rS)    r¬r­rrrUrVrTrXÚ searchsorted)r»ÚvÚsideÚsorterrÙs     r=rmzSparseArray.searchsortedŽsV€ð 9ˆÜ ‰ cÔ-Ô:JÓ:LÕMÜ J‰Jq‹MˆÜz‰z˜$ d§j¡j×&8Ñ&8Ô9×FÑFÀqÈ$ÐPVÓWÐWr<có„—|jj«}|j||j|j«SrÀ)r{rarÄrvrT)r»rás  r=razSparseArray.copy™s1€Ø—‘×$Ñ$Ó&ˆØ×Ñ ¨¯ © °t·z±zÓBÐBr<có¤—|dj}g}d}|r|dj}nd}|dk(r®g}|D]p}|jjj    «}||z }||jj
z }|j |j«|j |«Œrtj|«}    tj|«}
t||
«} nìg} g} |D]—}|jj«}|j |j«| j |jj    «|z«| j |j«||jj
z }Œ™tj|«}    tj| «}tj| «}t|||«} ||    | |¬«S)NrrA©r™rW)rWrrvrÊrar¯Úappendr{rUÚ concatenater Úto_block_indexÚblocsÚblengthsr )rÂÚ    to_concatrWrár¯Úsp_kindrÊrZÚint_idxr›Ú indices_arrrvrxrwÚ    block_idxÚ    blocs_arrÚ blengths_arrs                 r=rzSparseArray._concat_same_types˜€à˜q‘\×,Ñ,ˆ
àˆØˆá Ø ‘l×'Ñ'‰GàˆGð iÒ ØˆGà ò (ØŸ,™,×.Ñ.×3Ñ3Ó5Ø˜6Ñ!Ø˜#Ÿ,™,×-Ñ-Ñ-à— ‘ ˜cŸm™mÔ,Ø—‘˜wÕ'ð  (ô—>‘> &Ó)ˆDÜŸ.™.¨Ó1ˆKô  ¨ Ó4‰HðˆH؈Eà ò .ØŸL™L×7Ñ7Ó9    à— ‘ ˜cŸm™mÔ,Ø— ‘ ˜YŸ_™_×1Ñ1Ó3°fÑ<Ô=Ø—‘     × 2Ñ 2Ô3ؘ#Ÿ,™,×-Ñ-Ñ-‘ð  .ô—>‘> &Ó)ˆDÜŸ™ uÓ-ˆIÜŸ>™>¨(Ó3ˆLä! &¨)°\ÓBˆHá4 h¸:ÔFÐFr<có—||jk(r|s|S|j«St|«}t|t«s.t j |«}t|«}t||d¬«S|jj|«}t|j«}tt
j|«}t|j«}t|||¬«}t j |«}|j||j|«S)aE
        Change the dtype of a SparseArray.
 
        The output will always be a SparseArray. To convert to a dense
        ndarray with a certain dtype, use :meth:`numpy.asarray`.
 
        Parameters
        ----------
        dtype : np.dtype or ExtensionDtype
            For SparseDtype, this changes the dtype of
            ``self.sp_values`` and the ``self.fill_value``.
 
            For other dtypes, this only changes the dtype of
            ``self.sp_values``.
 
        copy : bool, default True
            Whether to ensure a copy is made, even if not necessary.
 
        Returns
        -------
        SparseArray
 
        Examples
        --------
        >>> arr = pd.arrays.SparseArray([0, 0, 1, 2])
        >>> arr
        [0, 0, 1, 2]
        Fill: 0
        IntIndex
        Indices: array([2, 3], dtype=int32)
 
        >>> arr.astype(SparseDtype(np.dtype('int32')))
        [0, 0, 1, 2]
        Fill: 0
        IntIndex
        Indices: array([2, 3], dtype=int32)
 
        Using a NumPy dtype with a different kind (e.g. float) will coerce
        just ``self.sp_values``.
 
        >>> arr.astype(SparseDtype(np.dtype('float64')))
        ... # doctest: +NORMALIZE_WHITESPACE
        [nan, nan, 1.0, 2.0]
        Fill: nan
        IntIndex
        Indices: array([2, 3], dtype=int32)
 
        Using a SparseDtype, you can also change the fill value as well.
 
        >>> arr.astype(SparseDtype("float64", fill_value=0.0))
        ... # doctest: +NORMALIZE_WHITESPACE
        [0.0, 0.0, 1.0, 2.0]
        Fill: 0.0
        IntIndex
        Indices: array([2, 3], dtype=int32)
        FrÛr`)r¡rar r§r"rUrVr,rrTÚ update_dtypeÚ_subtype_with_strr    r{rÄrv)r»rTraÚ future_dtyperárXr{s       r=ruzSparseArray.astypeÕs׀ðr D—K‘KÒ ÙØ à—y‘y“{Ð"ä# EÓ*ˆ ܘ,¬ Ô4ä—Z‘Z Ó%ˆFÜ3°FÓ;ˆFÜ ¨lÀÔGÐ Gà—
‘
×'Ñ'¨Ó.ˆÜ˜u×6Ñ6Ó7ˆÜ”r—x‘x Ó)ˆÜ/°·±Ó?ˆÜ  ¨°tÔ<ˆ    Ü—J‘J˜yÓ)ˆ    à×Ñ     ¨4¯=©=¸%Ó@Ð@r<cóD‡‡‡—t‰tjtf«Š|jŠ| t ‰«r‰r‰j ‰‰«n‰‰«Šˆˆˆfd„}|jDcgc]
}||«‘Œ }}t|«||j‰¬«Scc}w)af
        Map categories using an input mapping or function.
 
        Parameters
        ----------
        mapper : dict, Series, callable
            The correspondence from old values to new.
        na_action : {None, 'ignore'}, default None
            If 'ignore', propagate NA values, without passing them to the
            mapping correspondence.
 
        Returns
        -------
        SparseArray
            The output array will have the same density as the input.
            The output fill value will be the result of applying the
            mapping to ``self.fill_value``
 
        Examples
        --------
        >>> arr = pd.arrays.SparseArray([0, 1, 2])
        >>> arr.map(lambda x: x + 10)
        [10, 11, 12]
        Fill: 10
        IntIndex
        Indices: array([1, 2], dtype=int32)
 
        >>> arr.map({0: 10, 1: 11, 2: 12})
        [10, 11, 12]
        Fill: 10
        IntIndex
        Indices: array([1, 2], dtype=int32)
 
        >>> arr.map(pd.Series([10, 11, 12], index=[0, 1, 2]))
        [10, 11, 12]
        Fill: 10
        IntIndex
        Indices: array([1, 2], dtype=int32)
        cól•—‰r‰j|d«n‰|«}|‰us|‰k(r d}t|«‚|S)Nz-fill value in the sparse values not supported)ÚgetrY)Úsp_valÚ
new_sp_valrÙÚfill_valÚis_mapÚmappers   €€€r=ÚfunczSparseArray.map.<locals>.funcSs?ø€Ù5;˜Ÿ™ F¨DÔ1ÁÈÈJà˜XÑ%¨°xÒ)?ØEÜ  “oÐ%ØÐ r<rs)
r§rÚMappingr$rWr'r†r{r¨rv)r»r‹Ú    na_actionrŒÚxr{r‰rŠs `    @@r=ÚmapzSparseArray.map$s‰ú€ôP˜F¤S§[¡[´)Ð$<Ó=ˆà—?‘?ˆà Ð ¤ h¤Ù9?v—z‘z (¨HÔ5ÁVÈHÓEUˆHö    ð'+§n¡nÖ5 ‘T˜!•WÐ5ˆ    Ð5àŒtD‹z˜)°$·-±-ÈHÔUÐUùò6sÁ.BcóX—tj||jj¬«S)zr
        Convert SparseArray to a NumPy array.
 
        Returns
        -------
        arr : NumPy array
        rS)rUrVr{rTrås r=ryzSparseArray.to_dense_s€ôz‰z˜$ d§n¡n×&:Ñ&:Ô;Ð;r<có®—tj|||«}t|j|j¬«}t |«j ||¬«}|S)NrrS)rUrr"rTrWr¨rß)r»rírØÚnaive_implementationrTrŠs      r=Ú_wherezSparseArray._whereisM€ô "Ÿx™x¨¨d°EÓ:ÐÜÐ0×6Ñ6À4Ç?Á?ÔSˆÜd“×*Ñ*Ð+?ÀuÐ*ÓMˆØˆ r<có
—t|t«rX|\}\}}tjg«}|j    |«||_||_t|j|«|_    y|jj|«y)z*Necessary for making this object picklableN) r§r;rUr°Ú __setstate__r ržr"rTr¡Ú__dict__Úupdate)r»ÚstateÚnd_staterWrvr½s      r=r–zSparseArray.__setstate__tsl€ä eœUÔ #à/4Ñ ,ˆHÑ,z 8ÜŸH™H R›LˆMØ × &Ñ & xÔ 0à"/ˆDÔ Ø!)ˆDÔ Ü% m×&9Ñ&9¸:ÓFˆDKà M‰M×  Ñ   Õ 'r<cóœ—|jdk(r|jjfS|jj|jdk7fS)Nr)rWrvrÊr{rås r=ÚnonzerozSparseArray.nonzero‚sB€Ø ?‰?˜aÒ Ø—M‘M×)Ñ)Ð+Ð +à—M‘M×)Ñ)¨$¯.©.¸AÑ*=Ñ>Ð@Ð @r<)ÚskipnaÚkeepdimsc óè—t||d«}|€td|›d|j›«‚|r|}n|j«}t||«di|¤Ž}|rt    |«|g|j¬«S|S)Nzcannot perform z  with type rSr;)r€r«rTr.r¨)r»r†rržÚkwargsrrZrŠs        r=Ú_reducezSparseArray._reduceŒs}€ô˜˜t TÓ*ˆà ˆ>ܘo¨d¨V°;¸t¿z¹z¸lÐKÓLÐ Lá Ø‰Cà—+‘+“-ˆCà#”˜˜dÓ#Ñ- fÑ-ˆá Ø”4˜“:˜v˜h¨d¯j©jÔ9Ð 9àˆMr<cóԗtj||«|j}t|«t|«k7r t    j
|j «sy|j «S)z£
        Tests whether all elements evaluate True
 
        Returns
        -------
        all : bool
 
        See Also
        --------
        numpy.all
        F)ÚnvÚ validate_allr{r¸rUrdrW©r»ÚaxisÚargsr rás     r=rdzSparseArray.all sI€ô     ‰˜˜fÔ%à—‘ˆä ˆv‹;œ#˜d›)Ò #¬B¯F©F°4·?±?Ô,CØàz‰z‹|Ðr<cóð—tj||«|j}t|«t|«k7r t    j
|j «ry|j «j«S)z¯
        Tests whether at least one of elements evaluate True
 
        Returns
        -------
        any : bool
 
        See Also
        --------
        numpy.any
        T)r£Ú validate_anyr{r¸rUr~rWrËr¥s     r=r~zSparseArray.anyµsR€ô     ‰˜˜fÔ%à—‘ˆä ˆv‹;œ#˜d›)Ò #¬¯©¨t¯©Ô(?Øàz‰z‹|× Ñ Ó"Ð"r<cóR—tj||«|j}|j«}|jj
dkDxr |j }|r#|s!t|jjd¬«S|j r:t|jd|«r!t|jjd¬«S|S|jj
}    t|jd||    z
«r!t|jjd¬«S||j|    zzS)a 
        Sum of non-NA/null values
 
        Parameters
        ----------
        axis : int, default 0
            Not Used. NumPy compatibility.
        min_count : int, default 0
            The required number of valid values to perform the summation. If fewer
            than ``min_count`` valid values are present, the result will be the missing
            value indicator for subarray type.
        *args, **kwargs
            Not Used. NumPy compatibility.
 
        Returns
        -------
        scalar
        rF©ÚcompatN) r£Ú validate_sumrîÚsumrvrwrór&rTrXr1rÇrW)
r»r¦Ú    min_countrr§r Ú
valid_valsÚsp_sumÚhas_naÚnsparses
          r=r®zSparseArray.sumÊsï€ô4     ‰˜˜fÔ%Ø×*Ñ*ˆ
Ø—‘Ó!ˆØ—‘×$Ñ$ qÑ(ÒF°×1FÑ1FÐ-Fˆá ™&Ü% d§j¡j×&8Ñ&8ÀÔGÐ Gà ×  Ò  Ü$ Z×%5Ñ%5°t¸YÔGÜ)¨$¯*©*×*<Ñ*<ÀUÔKÐK؈Mà—m‘m×)Ñ)ˆGÜ$ Z×%5Ñ%5°t¸YÈÑ=PÔQÜ)¨$¯*©*×*<Ñ*<ÀUÔKÐKؘDŸO™O¨gÑ5Ñ5Ð 5r<cóH—tj||«|||jk\rtd|›d«‚|js't |j ««j«St |jj«|j|j¬«S)a 
        Cumulative sum of non-NA/null values.
 
        When performing the cumulative summation, any non-NA/null values will
        be skipped. The resulting SparseArray will preserve the locations of
        NaN values, but the fill value will be `np.nan` regardless.
 
        Parameters
        ----------
        axis : int or None
            Axis over which to perform the cumulative summation. If None,
            perform cumulative summation over flattened array.
 
        Returns
        -------
        cumsum : SparseArray
        zaxis(=z) out of boundsrs) r£Úvalidate_cumsumÚndimrYrórQryÚcumsumr{rvrW)r»r¦r§r s    r=r·zSparseArray.cumsumös‡€ô$     ×ј4 Ô(à Ð  ¨¯    ©    Ò 1ܘv d V¨?Ð;Ó<Ð <à×$Ò$ܘtŸ}™}›Ó/×6Ñ6Ó8Ð 8äØ N‰N× !Ñ !Ó #ØŸ™Ø—‘ô
ð    
r<cóú—tj||«|j}|j«}t    |«}|j
r||z S|j j}||j|zz||zz S)zb
        Mean of non-NA/null values
 
        Returns
        -------
        mean : float
        )    r£Ú validate_meanrîr®r¸rórvrwrW)r»r¦r§r r°r±Úctr³s        r=ÚmeanzSparseArray.meanss€ô     ×ј˜vÔ&Ø×*Ñ*ˆ
Ø—‘Ó!ˆÜ ‹_ˆà ×  Ò  Ø˜B‘;Ð à—m‘m×)Ñ)ˆGؘTŸ_™_¨wÑ6Ñ6¸2À¹<ÑHÐ Hr<)r¦rcóh—tj||j«|jd|¬«S)a4
        Max of array values, ignoring NA values if specified.
 
        Parameters
        ----------
        axis : int, default 0
            Not Used. NumPy compatibility.
        skipna : bool, default True
            Whether to ignore NA values.
 
        Returns
        -------
        scalar
        r^©r©r£Úvalidate_minmax_axisr¶Ú_min_max©r»r¦rs   r=r^zSparseArray.max)ó+€ô     ×Ñ  d§i¡iÔ0؏}‰}˜U¨6ˆ}Ó2Ð2r<cóh—tj||j«|jd|¬«S)a4
        Min of array values, ignoring NA values if specified.
 
        Parameters
        ----------
        axis : int, default 0
            Not Used. NumPy compatibility.
        skipna : bool, default True
            Whether to ignore NA values.
 
        Returns
        -------
        scalar
        r r½r¾rÁs   r=r zSparseArray.min;rÂr<cóÒ—|j}|j xr|jjdkD}t    |«dkDrwt ||««}|r$|dk(rt nt}|||j«S|r|S|jjdk(r|St|jjd¬«S|r |jSt|jjd¬«S)zº
        Min/max of non-NA/null values
 
        Parameters
        ----------
        kind : {"min", "max"}
        skipna : bool
 
        Returns
        -------
        scalar
        rr^Fr«) rîrórvrwr¸r€r^r rWr&rTrX)r»rrr°Úhas_nonnull_fill_valsÚ
sp_min_maxrŒs       r=rÀzSparseArray._min_maxMsπð×*Ñ*ˆ
Ø$(×$9Ñ$9Р9Ò U¸d¿m¹m×>QÑ>QÐTUÑ>UÐä ˆz‹?˜QÒ Ø2œ ¨TÓ2Ó4ˆJñ%Ø" ešm•s´Ù˜J¨¯©Ó8Ð8ÙØ!Ð!Ø—‘×$Ñ$¨Ò)à!Ð!ä)¨$¯*©*×*<Ñ*<ÀUÔKÐKÙ "Ø—?‘?Ð "ä% d§j¡j×&8Ñ&8ÀÔGÐ Gr<có —|j}|jj}tjt |««}|dk(rtj ntj}tj|jd«}||}||}|||«}    ||    }
t |j«r|
S|dk(r||
|jkr|
S|dk(r||
|jkDr|
S|j«} | dk(r|
S| S)NrrÚargminr) r ržrÊrUrVr%rrÈrDrÇrWr) r»rrárŒrírŒrÍÚnon_nansÚ non_nan_idxÚ
_candidateÚ    candidateÚ_locs             r=Ú_argmin_argmaxzSparseArray._argmin_argmaxpsö€Ø×$Ñ$ˆØ×"Ñ"×*Ñ*ˆÜz‰zœ$˜v›,Ó'ˆØ  HÒ,ŒryŠy´"·)±)ˆäi‰i˜Ÿ ™  Q™Ó(ˆØ˜4˜%‘=ˆØ˜4˜%‘jˆ à ¡ h£Ñ0ˆ
ؘ*Ñ%ˆ    ä —‘Ô  ØÐ Ø 8Ò   Y¡°$·/±/Ò AØÐ Ø 8Ò   Y¡°$·/±/Ò AØÐ Ø×)Ñ)Ó+ˆØ 2Š:àÐ àˆKr<cód—t|d«|s|jrt‚|jd«S)Nrr©rÚ_hasnaÚNotImplementedErrorrΩr»rs  r=rzSparseArray.argmaxŠó,€Ü˜F HÔ-Ù˜$Ÿ+š+Ü%Ð %Ø×"Ñ" 8Ó,Ð,r<cód—t|d«|s|jrt‚|jd«S)NrrÈrÐrÓs  r=rÈzSparseArray.argminrÔr<có°‡—|jdd«}||zD](}t|‰jtfz«rŒ"tcSt j ‰||g|¢­i|¤Ž}|tur|Sd|vrt j‰||g|¢­i|¤Ž}|S|dk(r%t j‰||g|¢­i|¤Ž}|tur|St|«dk(r¡t||«‰jfi|¤Ž}    t||«‰jfi|¤Ž}
|jdkDr tˆfd„t|    |
«D««} | S|dk(r|    S‰j!|    ‰j"t%|    j&|
««Std„|D««} t||«| i|¤Ž}|rt|«dk(r|d}|S|jdkDrtˆfd„|D««S|d    k(ryt)‰«|«S)
NrÔr;Úreducerfc    3ó†•K—|]8\}}‰j|‰jt|j|««–—Œ:y­wrÀ)rÄrvr"rT)Ú.0Úsp_valueÚfvr»s   €r=ú    <genexpr>z.SparseArray.__array_ufunc__.<locals>.<genexpr>Às@øèø€òñ%˜ "ð×$Ñ$Ø  $§-¡-´¸X¿^¹^ÈRÓ1P÷ñùsƒ>Ac3óFK—|]}tj|«–—Œy­wrÀ)rUrV)rÙrs  r=rÜz.SparseArray.__array_ufunc__.<locals>.<genexpr>Ïsèø€Ò9¨Qœ2Ÿ:™: aŸ=Ñ9ùs‚!rc3ó@•K—|]}t‰«|«–—Œy­wrÀ)r¨)rÙrr»s  €r=rÜz.SparseArray.__array_ufunc__.<locals>.<genexpr>×søèø€Ò7¨1˜œ˜d› AŸÑ7ùsƒÚat)r†r§Ú_HANDLED_TYPESrQÚNotImplementedr(Ú!maybe_dispatch_ufunc_to_dunder_opÚdispatch_ufunc_with_outÚdispatch_reduction_ufuncr¸r€r{rWÚnoutr;ÚziprÄrvr"rTr¨) r»ÚufuncrÚinputsr rÔrrŠÚresr{rWÚarraysÚ
new_inputss `            r=Ú__array_ufunc__zSparseArray.__array_ufunc__œsø€Øj‰j˜ Ó#ˆà˜#‘ò    &ˆAܘa ×!4Ñ!4¼ °~Ñ!EÕFÜ%Ò%ð    &ô
×<Ñ<Ø %˜ð
Ø"(ò
Ø,2ñ
ˆð œÑ '؈Mà F‰?ä×3Ñ3ؐe˜VðØ&,òØ06ñˆCðˆJà XÒ Ü×7Ñ7ؐe˜VðØ&,òØ06ñˆFðœ^Ñ+à ä ˆv‹;˜!Ò à.œ  vÓ.¨t¯~©~ÑHÀÑHˆIØ/œ ¨Ó/°·±ÑJÀ6ÑJˆJàz‰z˜AŠ~äóô),¨I°zÓ(Bô    óð  ؘ8Ò#à Ð à×#Ñ#ؘ4Ÿ=™=¬+°i·o±oÀzÓ*Róð ôÑ9°&Ô9Ó9ˆ
Ø'”˜ Ó'¨Ð>°vÑ>ˆÙ ܐ3‹x˜1Š}ؘ!‘fØˆJà :‰:˜Š>ÜÓ7°Ô7Ó7Ð 7Ø tŠ^àà”4˜“:˜fÓ%Ð %r<c    ó^—|j}t|t«rt||||«St    |«r®t j d¬«5|t|«t j|««}||j|«}ddd«|dk(r:\}}\}}    t|||j|«t|||j|    «fSt||j«St j|«}t j d¬«5t|«t|«k7r#tdt|«›dt|«›«‚t|t«s%t|dd«}
t||j|
¬«}t||||«cddd«S#1swYŒxYw#1swYyxYw)Nrbrcrszlength mismatch: z vs. rTrü)r7r§rQr‘rrUrxr[rVr{r‚rvr¸rºr€rW) r»Úotherr…Úop_namer‹rŠrƒr„ÚlfillÚrfillrTs            r=Ú _arith_methodzSparseArray._arith_methodâs„€Ø—+‘+ˆä eœ[Ô )Ü# D¨%°°WÓ=Ð =ä uÔ Ü—‘ Ô*ñ 3Ùœ) D›/¬2¯:©:°eÓ+<Ó=Ù˜DŸN™N¨EÓ2÷ 3ð˜(Ò"Ø$‘ eØ#‘ uä  ¨$°· ± ¸uÓEÜ  ¨%°·±ÀÓFððô
  ¨°·±ÀÓEÐ Eô—J‘J˜uÓ%ˆEÜ—‘ Ô*ñ Bܐt“9¤ E£
Ò*Ü(Ø+¬C°«I¨;°e¼CÀ»J¸<ÐHóðô" %¬Ô5Ü# E¨7°DÓ9EÜ'¨¸$¿/¹/ÐQVÔWEÜ'¨¨e°R¸ÓA÷ Bñ B÷! 3ñ 3ú÷  Bð BúsÁ 9FÄA=F#ÆF Æ#F,cóЗt|«s*t|t|««stj|«}t|tj
«rt ||j¬«}t|t «rct|«t|«k7r#tdt|«›dt|«›«‚|jjd«}t||||«S||j|«}tjt|«|tj¬«}||j|«||j j"<t|«||tj¬«S)Nrz operands have mismatched length z and rmrSrü)rr§r¨rUrVr´rQrWr¸rYr7Ústripr‘rÓrýr{rvrÊ)r»rîr…rïrWrŠs      r=Ú _cmp_methodzSparseArray._cmp_methods€Ü˜Ô¬
°5¼$¸t»*Ô(Eä—J‘J˜uÓ%ˆEä eœRŸZ™ZÔ (ä °$·/±/ÔBˆEä eœ[Ô )ܐ4‹yœC ›JÒ&Ü Ø6´s¸4³y°kÀÄsÈ5ÃzÀlÐSóðð—k‘k×'Ñ'¨Ó,ˆGÜ# D¨%°°WÓ=Ð =ñ˜DŸO™O¨UÓ3ˆJÜ—W‘WœS ›Y¨
¼"¿(¹(ÔCˆFÙ,.¨t¯~©~¸uÓ,EˆF4—=‘=×(Ñ(Ñ )à”4˜“:ØØ%Ü—h‘hôð r<có—|tj|j««j«}t    |j
j |«}t|j«s||jk(rB||j«}t|«j||j|j
«St|«||j««|¬«SrÝ) rUr°rWrËr"rTrXr%r{r¨rÄrvry)r»r…rWrTrás     r=Ú _unary_methodzSparseArray._unary_method"sž€ÙœŸ™ §¡Ó1Ó2×7Ñ7Ó9ˆ
ܘDŸJ™J×.Ñ.°
Ó;ˆô —‘Ô   J°$·/±/Ò$AÙ˜Ÿ™Ó'ˆFܘ“:×)Ñ)¨&°$·-±-ÀÇÁÓLÐ LàŒtD‹z™"˜TŸ]™]›_Ó-°UÔ;Ð;r<có@—|jtj«SrÀ)r÷ÚoperatorÚposrås r=Ú__pos__zSparseArray.__pos__-ó€Ø×!Ñ!¤(§,¡,Ó/Ð/r<có@—|jtj«SrÀ)r÷rùÚnegrås r=Ú__neg__zSparseArray.__neg__0rür<có@—|jtj«SrÀ)r÷rùÚinvertrås r=Ú
__invert__zSparseArray.__invert__3s€Ø×!Ñ!¤(§/¡/Ó2Ð2r<có@—|jtj«SrÀ)r÷rùrrås r=Ú__abs__zSparseArray.__abs__6rür<có¼—tj|«}tj|j«}tj|j«}|›d|›d|›S)Nz
Fill: ú
)r2Ú pprint_thingrWrv)r»Úpp_strÚpp_fillÚpp_indexs    r=Ú__repr__zSparseArray.__repr__<sQ€Ü×&Ñ& tÓ,ˆÜ×'Ñ'¨¯©Ó8ˆÜ×(Ñ(¨¯©Ó7ˆØ˜ ' ¨"¨X¨JÐ7Ð7r<có—yrÀr;)r»Úboxeds  r=Ú
_formatterzSparseArray._formatterBs€ðr<)NNrANF)rÚSparseIndexKindrTú Dtype | NonerarjÚreturnÚNone)rrŸr™rrTr"rrL)r›r>rrL)NN)rTzNpDtype | Noneraz bool | NonerrŸ)rr)rTrrarj)rr)rrŸ)rr")rr)rÚint)rrj)rÚfloat)rrL)
rr?rþú
int | Nonerÿz#Literal['inside', 'outside'] | NonerarjrrL)NNNT)rzFillnaOptions | NonerþrrarjrrL)rfN)rrrrL)Úfirst)rzLiteral['first', 'last', False]rznpt.NDArray[np.bool_])T)r(rjrztuple[np.ndarray, SparseArray])r.rjrrO)r×rKrr)r×z,SequenceIndexer | tuple[int | ellipsis, ...]rrL)r×z.PositionalIndexer | tuple[int | ellipsis, ...]rz
Self | Any)rVrjrrLrÀ)rƒN)rnzArrayLike | objectrozLiteral['left', 'right']rpzNumpySorter | Nonerznpt.NDArray[np.intp] | np.intp)ryzSequence[Self]rrL)NT)rTzAstypeArg | Nonerarj)rztuple[npt.NDArray[np.int32]])r†r©rrjržrj)r)r¦rFrrj)rrT)r¦rFr¯rrrjrrJ)r¦rFrrQ)r¦rE)r¦zAxisInt | Nonerrj)rzLiteral['min', 'max']rrjrrJ)rzLiteral['argmin', 'argmax']rr)rrjrr)rçznp.ufuncrr©)rrQ)rr©)F)r rj)Wr7r8r9Ú__doc__Ú_subtypr+Ú _hidden_attrsÚ    frozensetÚ__annotations__r¾Ú classmethodrÄrÏrÕrÚrßrãÚpropertyrvr{rTrWÚsetterrrîrðrórõr÷rùr¹r%rrrrrr*rr r&r)r4r
r7r<rFrYrZrmrarrurryr”r–rœr¡rdr~r®r·r»r^r rÀrÎrrÈrUr´ÚnumbersÚNumberràrìròrõÚ_logical_methodr÷rûrÿrrr rÚ __classcell__)rs@r=rQrQsåø…ñDðL€GØ ×.Ñ.±¸2³Ñ>€MØÓØÓØ Óð
ØØ )Ø"ØðCCð
ð CCð ð CCððCCð
óCCðJð
à ð
ð"ð
ðð    
ð
 
óð
ðò)2óð)2ðXAEð)Ø#ð)Ø2=ð)à    ó)óVðØ>BÐQVô)óð)ðñ1óð1ð ò"óð"ð ò #óð #ðòóððñ%óð%ð$×Ñò=óð=ðòóððòóðó
$ðò-óð-ó1ð ò<óð<ðò <óð <ðò %óð %ó?ð!Ø:>Øñ 
ðð 
ðð     
ð
8ð 
ð ð 
ð
õ 
ð Ø'+Ø Øð ;Kð%ð;Kðð    ;Kð
ð ;Kð
õ ;Kôz-ò60ñ*    ˆ×    "Ñ    "Ó#à6=ð>Ø3ð>à    ò>ó$ð>ó Dò1ð !%ð !àð !ð
(ó !ô&7ðVò óð ðð à 9ð ð
ò óð ð \6à ;ð\6ð
ó\6ò|    ð38ÀDõ
ô$@óDUð4*0Ø%)ð        Xà ð    Xð'ð    Xð#ð        Xð
 
(ó     XóCðò5Góð5GônMAô^9Vóv<òó (óAð,0À%ñØðØ$(ðØ;?óó(ô*#ð.ØØð    *6àð*6ðð*6ðð    *6ð
ó*6ôX
ô@Ið&-1Àõ3ð$-1Àõ3ó$!HóFô4-ô -ð—j‘j '§.¡.Ð1€Nó@&òLBóBð:"€Oó    <ó0ó0ó3ó0ó 8÷ ðr<cóÌ—t|tj«sJ‚|jdkDr t    d«‚|€t |j «}t|«r t|«}n[t|j «r|jt«}t|j «rtj||«}n||k7}t|«}|t|«k7r|j j"}n0|j%«djtj&«}t)|||«}||}|-t+|«}t-||¬«}tj.|«}|||fS)a@
    Convert ndarray to sparse format
 
    Parameters
    ----------
    arr : ndarray
    kind : {'block', 'integer'}
    fill_value : NaN or another value
    dtype : np.dtype, optional
    copy : bool, default False
 
    Returns
    -------
    (sparse_values, index, fill_value) : (ndarray, SparseIndex, Scalar)
    rfzexpected dimension <= 1 datarrS)r§rUr´r¶r«r&rTr%r'rrur±rrÚmake_mask_object_ndarrayr¸rvrÊrœrErCr,rrV)    rZrrWrTrír¯rÊrŒÚsparsified_valuess             r=r·r·Hs4€ô* cœ2Ÿ:™:Ô &Ð&Ð &à
‡xx!‚|ÜÐ6Ó7Ð7àÐÜ'¨¯    ©    Ó2ˆ
ä ˆJÔܐS‹z‰ô ˜3Ÿ9™9Ô %Ø—*‘*œVÓ$ˆCä ˜3Ÿ9™9Ô %ô×1Ñ1°#°zÓB‰Dà˜*Ñ$ˆDä ‹X€FØ ”T“Òà—-‘-×'Ñ'‰à—,‘,“. Ñ#×*Ñ*¬2¯8©8Ó4ˆä ˜f g¨tÓ 4€EؘD™    ÐØ ÐÜ:Ð;LÓMÐÜ(Ð):À%ÔHÐÜŸJ™JÐ'8Ó9Ðð ˜e ZÐ /Ð/r<có—yrÀr;©r¯rÊrs   r=rCrC†ó€àr<có—yrÀr;r's   r=rCrC‹r(r<có–—|dk(r'tj|«\}}t|||«}|S|dk(rt||«}|St    d«‚)NrBrAzmust be block or integer type)rÚ
get_blocksr r rY)r¯rÊrÚlocsÚlensrŒs      r=rCrCs]€à ˆw‚Ü×%Ñ% gÓ.‰
ˆˆdܘ6 4¨Ó.ˆð
€Lð    
Ò    Ü˜ Ó)ˆð €LôÐ8Ó9Ð9r<)rZrQrrŸ)
rƒrQr„rQr…rr†r©rrQrÀ)r†r©rTrrrQ)rBNN)rZrŸrrrTznp.dtype | None)r¯rrzLiteral['block']rr )r¯rrzLiteral['integer']rr )r¯rrrrr)|rÚ
__future__rÚ collectionsrrrùÚtypingrrrrr    r
r¬ÚnumpyrUÚ pandas._libsr Úpandas._libs.sparseÚ_libsÚsparserr r rÚpandas._libs.tslibsrÚpandas.compat.numpyrr£Ú pandas.errorsrÚpandas.util._decoratorsrÚpandas.util._exceptionsrÚpandas.util._validatorsrrÚpandas.core.dtypes.astyperÚpandas.core.dtypes.castrrrÚpandas.core.dtypes.commonrrrrrrr Úpandas.core.dtypes.dtypesr!r"Úpandas.core.dtypes.genericr#r$Úpandas.core.dtypes.missingr%r&r'Ú pandas.corer(Úpandas.core.algorithmsÚcoreÚ
algorithmsrÚpandas.core.arrayliker)Úpandas.core.arraysr*Úpandas.core.baser+Úpandas.core.commonÚcommonrHÚpandas.core.constructionr,r-r.Úpandas.core.indexersr/r0Úpandas.core.nanopsr1Úpandas.io.formatsr2Úcollections.abcr3Úenumr4r6r:Ú scipy.sparser>Úpandas._typingr?r@rrCrDrErFrGrHrIrJrKrLrMrNr/rOr¨Ú_sparray_doc_kwargsr[r‘r‚rQr·rCr;r<r=ú<module>rTsîðñõ#åÛÛ÷÷óãåß#Ð#÷ñõ
$Ý.Ý,Ý'Ý4÷õ
3÷ñ÷
÷ñ÷÷÷ñõ "ß&Ð&Ý*Ý-Ý)ߠР÷ñ÷
õ5å&ñÝ(Ýô4ôð× Ñ €Hå%÷ð
Ð0Ñ1€O÷ ÷ ÷ ó öñH‹~€Hð   Ð.Ðó*ð0iGØ
ðiGØ)ðiGØ/7ðiGØ?BðiGàóiGðZFJðØ
ðØ6Bðàóô.f(˜L¨.ôfðV1$ØØ!ð    ;0Ø    ð;0à
ð;0ð ó    ;0ð|
òó
ðð
òó
ðô    r<