
    (ph~I                     l    S SK rS SKJr  S SKrS SKJr  S SKJrJ	r	J
r
  S SKJr  SSKJr   " S S	5      rg)
    N)assert_allclose)raises)binned_statisticbinned_statistic_2dbinned_statistic_dd)check_random_state   )check_named_resultsc                   b   \ rS rSr\S 5       rS rS rS rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S  r#S! r$S" r%S# r&S$ r'S% r(S& r)S' r*S( r+S) r,S* r-S+ r.S, r/S- r0\1Rd                  Rg                  S.\4Rj                  \4Rl                  /5      \1Rd                  Rg                  S/\4Rn                  \4Rp                  \4Rr                  \4Rt                  \4Rv                  \4Rx                  S0S1 S2 /	5      S3 5       5       r=S4r>g5)6TestBinnedStatistic   c                    [        S5      nUR                  SS9U l        UR                  SS9U l        UR                  SS9U l        UR                  SS9U l        UR                  SS9U l        UR                  SS9S-   U l        g )N&  d   size)r      g    .A)r   uniformxyvXwu)clsrngs     Z/var/www/html/venv/lib/python3.13/site-packages/scipy/stats/tests/test_binned_statistic.pysetup_classTestBinnedStatistic.setup_class   s}     &%%%*%%+    c                     U R                   nU R                  n[        XSSS9u  p4n[        R                  " USS9u  pg[        X65        [        XG5        g )Ncount
   binsr   r   r   np	histogramr   )selfr   r   count1edges1bccount2edges2s           r   test_1d_count!TestBinnedStatistic.test_1d_count   sI    FFFF-aG"Eab1''r    c                 d    U R                   nU R                  n/ SQnU H  n[        XUSS9  M     g )N)meanmedianr"   sumr#   r$   )r   r   r   )r)   r   r   
statistics	statistics        r   test_gh5927TestBinnedStatistic.test_gh5927"   s1     FFFF7
#IQ926 $r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        g Nstdr#   r$   )r   r   r   r'   r;   r   r)   r   r   stat1r+   r,   stat2r.   s           r   test_big_number_std'TestBinnedStatistic.test_big_number_std+   sH     FFFF,Q5rBr,Q266Cr%r    c           	          U R                   nU R                  n[        [        XSSS95        [        XSSS9u  p4n[        X[        R
                  SS9u  pgn[        X65        g )Nr"   i  r$   r;   )r   r   printr   r'   r;   r   r<   s           r   test_empty_bins_std'TestBinnedStatistic.test_empty_bins_std5   sX    FFFFqW489,Q5tDr,Q266Er%r    c           
      8   U R                   nU R                  nUS   n[        R                  US'   [	        [
        [        X!SSS9  [	        [
        [        X!S[        R                  " S5      S9  [        R                  US'   [	        [
        [        X!SSS9  X2S'   g )Nr   r;   r#   r$   r"   )	r   r   r'   infassert_raises
ValueErrorr   int64nan)r)   r   r   origs       r   #test_non_finite_inputs_and_int_bins7TestBinnedStatistic.test_non_finite_inputs_and_int_bins?   s~     FFFFtvv!j"2A%bIj"2A%88B<	)vv!j"2A'K!r    c                 d    U R                   nU R                  n[        XSSS9nSn[        X45        g )Nr"   r#   r$   r6   	bin_edges	binnumber)r   r   r   r
   )r)   r   r   res
attributess        r   test_1d_result_attributes-TestBinnedStatistic.test_1d_result_attributesO   s/    FFFFqW26<
C,r    c                     U R                   nU R                  n[        XSSS9u  p4n[        R                  " USUS9u  pg[        X65        [        XG5        g )Nr4   r#   r$   r%   weightsr&   )r)   r   r   sum1r+   r,   sum2r.   s           r   test_1d_sumTestBinnedStatistic.test_1d_sumW   sK    FFFF+A%bAb||AB:#'r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nr2   r#   r$   )r   r   r   r'   r2   r   r)   r   r   r=   r+   r,   r>   r.   s           r   test_1d_mean TestBinnedStatistic.test_1d_meana   sN    FFFF,Q6Cr,Q277Dr%'r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g r:   )r   r   r   r'   r;   r   r^   s           r   test_1d_stdTestBinnedStatistic.test_1d_stdk   N    FFFF,Q5rBr,Q266Cr%'r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nminr#   r$   )r   r   r   r'   rf   r   r^   s           r   test_1d_minTestBinnedStatistic.test_1d_minu   rd   r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nmaxr#   r$   )r   r   r   r'   rj   r   r^   s           r   test_1d_maxTestBinnedStatistic.test_1d_max   rd   r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nr3   r#   r$   )r   r   r   r'   r3   r   r^   s           r   test_1d_median"TestBinnedStatistic.test_1d_median   sN    FFFF,Q8"Er,Q2992Fr%'r    c                 .   U R                   S S nU R                  S S n[        XSSS9u  p4n[        R                  " / SQ5      n[        R
                  " U5       Vs/ s H  ouU:H  R                  5       PM     nn[        XV5        [        X5        g s  snf )N   r"   r   r$   )r      r	   r   rr   r   r   r   r   r	   r	   r   r   r	   rr   r   r	   r	   rr   r	   )r   r   r   r'   arrayuniquer4   r   )	r)   r   r   r*   r+   r,   bc2ibcounts	            r   test_1d_bincode#TestBinnedStatistic.test_1d_bincode   s    FF3BKFF3BK-aG!Dhh ! " ,.99R=9=a7--/=9 ' :s   Bc                 d   [         R                  R                  S5        [         R                  " S5      n[         R                  R                  S5      n[	        US S US S 5      u  p4n[	        XS/S9u  pgn[	        XSS9u  pn[        X65        [        XG5        [        X85        [        XI5        g )Nr         )r      range)r'   randomseedaranger   r   )
r)   r   datar2   r%   _
mean_range
bins_rangemean_range2bins_range2s
             r   test_1d_range_keyword)TestBinnedStatistic.test_1d_range_keyword   s    
		tIIbMyy#(3Bcr;A$4QWI$N!
&6qg&N#!))**r    c                    U R                   nU R                  nU R                  n[        XSSS9u  pEn[        XSSS9u  pxn	[        XU/SSS9u  pn[	        U
S   U5        [	        U
S   U5        [	        X[5        [	        Xl5        g )Nr2   r#   r$   r   r	   )r   r   r   r   r   )r)   r   r   r   stat1vedges1vbc1vstat1wedges1wbc1wr>   r.   ru   s                r   test_1d_multi_values(TestBinnedStatistic.test_1d_multi_values   s    FFFFFF 0vB G 0vB G-aQbIsa&)a&)("r    c                     U R                   nU R                  nU R                  n[        XUSSS9u  pEpg[        R
                  " XSS9u  pn
[        XH5        [        XY5        [        Xj5        g )Nr"      r$   r   r   r   r   r'   histogram2dr   )r)   r   r   r   r*   binx1biny1r,   r-   binx2biny2s              r   test_2d_count!TestBinnedStatistic.test_2d_count   sb    FFFFFF#6!W1$& u!~~a;u'%%r    c                 ~    U R                   nU R                  nU R                  n[        XUSSS9nSn[	        XE5        g )Nr"   r   r$   )r6   x_edgey_edgerQ   )r   r   r   r   r
   )r)   r   r   r   rR   rS   s         r   test_2d_result_attributes-TestBinnedStatistic.test_2d_result_attributes   s:    FFFFFF!!7;C
C,r    c                     U R                   nU R                  nU R                  n[        XUSSS9u  pEpg[        R
                  " XSUS9u  pn
[        XH5        [        XY5        [        Xj5        g )Nr4   r   r$   rW   r   )r)   r   r   r   rY   r   r   r,   rZ   r   r   s              r   test_2d_sumTestBinnedStatistic.test_2d_sum   sa    FFFFFF!4Q1e!!LU^^Aq!DU#%%r    c                     U R                   nU R                  nU R                  n[        XUSSS9u  pEpg[        XU[        R
                  SS9u  pp[        XH5        [        XY5        [        Xj5        g Nr2   r   r$   r   r   r   r   r'   r2   r   r)   r   r   r   r=   r   r   r,   r>   r   r   s              r   test_2d_mean TestBinnedStatistic.test_2d_mean   sc    FFFFFF"5aAvA"Ne"5aArwwQ"Oe%%%r    c                     U R                   nU R                  nU R                  n[        XUSSS9u  pEpg[        XU[        R
                  SS9u  pp[        XH5        [        XY5        [        Xj5        g r   r   r   s              r   test_2d_mean_unicode(TestBinnedStatistic.test_2d_mean_unicode   sf    FFFFFF"5!V!#%e"5aArwwQ"Oe%%%r    c                     U R                   nU R                  nU R                  n[        XUSSS9u  pEpg[        XU[        R
                  SS9u  pp[        XH5        [        XY5        [        Xj5        g )Nr;   r   r$   )r   r   r   r   r'   r;   r   r   s              r   test_2d_stdTestBinnedStatistic.test_2d_std   c    FFFFFF"5aAu1"Me"5aArvvA"Ne%%%r    c                     U R                   nU R                  nU R                  n[        XUSSS9u  pEpg[        XU[        R
                  SS9u  pp[        XH5        [        XY5        [        Xj5        g )Nrf   r   r$   )r   r   r   r   r'   rf   r   r   s              r   test_2d_minTestBinnedStatistic.test_2d_min  r   r    c                     U R                   nU R                  nU R                  n[        XUSSS9u  pEpg[        XU[        R
                  SS9u  pp[        XH5        [        XY5        [        Xj5        g )Nrj   r   r$   )r   r   r   r   r'   rj   r   r   s              r   test_2d_maxTestBinnedStatistic.test_2d_max  r   r    c                     U R                   nU R                  nU R                  n[        XUSSS9u  pEpg[        XU[        R
                  SS9u  pp[        XH5        [        XY5        [        Xj5        g )Nr3   r   r$   )r   r   r   r   r'   r3   r   r   s              r   test_2d_median"TestBinnedStatistic.test_2d_median  sk    FFFFFF"5!XA#'e"5!RYYQ#(e 	%%%r    c                 r   U R                   S S nU R                  S S nU R                  S S n[        XUSSS9u  pEpg[        R
                  " / SQ5      n[        R                  " U5       V	s/ s H  oU	:H  R                  5       PM     n
n	[        Xx5        XDR                  5          n[        X5        g s  sn	f )Nrq   r"   r   r$   )            r   r      r   r      r   r   r   r   r   r   r   r   r      )
r   r   r   r   r'   rs   rt   r4   r   nonzero)r)   r   r   r   r*   r   r   r,   ru   rv   rw   	count1adjs               r   test_2d_bincode#TestBinnedStatistic.test_2d_bincode(  s    FF3BKFF3BKFF3BK#6!W1$& uhh 0 1 ,.99R=9=a7--/=9 >>+,	*	 :s   -B4c                 B   U R                   nU R                  nU R                  nU R                  n[	        XUSSS9u  pVpx[	        XUSSS9u  pp[	        XX4/SSS9u  pnn[        US   U5        [        US   U	5        [        Xn5        [        X5        [        UU5        g )Nr2   r   r$   r   r	   )r   r   r   r   r   r   )r)   r   r   r   r   r   binx1vbiny1vr   r   binx1wbiny1wr   r>   r   r   ru   s                    r   test_2d_multi_values(TestBinnedStatistic.test_2d_multi_values8  s    FFFFFFFF':!V!(%$':!V!(%$#61&&q$* eS 	a&)a&)&&c"r    c           	         U R                   nU R                  nU R                  n[        XSSS9u  pEn[        X#SSS9u  pGn[	        XUSSSS9u  pp[
        R                  " XQSS	9n[
        R                  " XrSS	9nXUR                  5       :H  ==   S
-  ss'   XUR                  5       :H  ==   S
-  ss'   [        XlS   5        [        XS
   5        [        XS   5        [        XS
   5        g )Nr2   rq   r$   r#   )rq   r#   Tr%   expand_binnumbersright)sider	   r   )	r   r   r   r   r   r'   searchsortedrj   r   )r)   r   r   r   statedgesxbcxedgesybcyr>   edgesx2edgesy2ru   bcx3bcy3s                  r   test_2d_binnumbers_unraveled0TestBinnedStatistic.test_2d_binnumbers_unraveledK  s    FFFFFF,Q6Cc,Q6Cc':!V(d(D$ vw7vw7 	!%%'\a!%%'\aV$V$!f%!f%r    c                     U R                   nU R                  n[        XSSS9u  p4n[        R                  " USS9u  pg[        X65        [        XG5        g )Nr"   r   r$   )r   r   r   r'   histogramddr   )r)   r   r   r*   r+   r,   r-   r.   s           r   test_dd_count!TestBinnedStatistic.test_dd_countb  sI    FFFF0wQG2''r    c                 d    U R                   nU R                  n[        XSSS9nSn[        X45        g )Nr"   r   r$   rO   )r   r   r   r
   )r)   r   r   rR   rS   s        r   test_dd_result_attributes-TestBinnedStatistic.test_dd_result_attributesl  s/    FFFF!!a8<
C,r    c                    U R                   nU R                  n[        XSSS9u  p4n[        R                  " USUS9u  pg[        X[        R
                  SS9u  pn[        X65        [        XG5        [        X85        [        XI5        g )Nr4   r   r$   rW   )r   r   r   r'   r   r4   r   )
r)   r   r   rY   r+   r,   rZ   r.   sum3edges3s
             r   test_dd_sumTestBinnedStatistic.test_dd_sumt  sr    FFFF.qUCb~~aa;.qRVV!Db#'#'r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nr2   r   r$   )r   r   r   r'   r2   r   r)   r   r   r=   r+   r,   r>   r.   s           r   test_dd_mean TestBinnedStatistic.test_dd_mean  sN    FFFF/f1Er/bggAFr%'r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nr;   r   r$   )r   r   r   r'   r;   r   r   s           r   test_dd_stdTestBinnedStatistic.test_dd_std  N    FFFF/e!Dr/bff1Er%'r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nrf   r   r$   )r   r   r   r'   rf   r   r   s           r   test_dd_minTestBinnedStatistic.test_dd_min  r   r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nrj   r   r$   )r   r   r   r'   rj   r   r   s           r   test_dd_maxTestBinnedStatistic.test_dd_max  r   r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nr3   r   r$   )r   r   r   r'   r3   r   r   s           r   test_dd_median"TestBinnedStatistic.test_dd_median  sN    FFFF/hQGr/biiaHr%'r    c                 R   U R                   S S nU R                  S S n[        XSSS9u  p4n[        R                  " / SQ5      n[        R
                  " U5       Vs/ s H  ouU:H  R                  5       PM     nn[        XV5        X3R                  5          n	[        X5        g s  snf )Nrq   r"   r   r$   )?   !   V   S   X   C   9   r   *   )   R   r  \       $   [   +   W   Q   r  )	r   r   r   r'   rs   rt   r4   r   r   )
r)   r   r   r*   r+   r,   ru   rv   rw   r   s
             r   test_dd_bincode#TestBinnedStatistic.test_dd_bincode  s    FF3BKFF3BK0wQGhh 4 5 ,.99R=9=a7--/=9 >>+,	*	 :s   B$c                 `   U R                   nU R                  nU R                  nSSSSSSS[        R                  4 Hn  n[        XUSS	9u  pVn[        XUSS	9u  pn
[        XU/USS	9u  pn[        US
   U5        [        US   U5        [        Xl5        [        X5        [        X}5        Mp     g )Nr"   r4   r2   r;   rf   rj   r3   r   r$   r   r	   )r   r   r   r'   r;   r   r   )r)   r   r   r   r   r   r   r   r   r   r   r>   r.   ru   s                 r   test_dd_multi_values(TestBinnedStatistic.test_dd_multi_values  s    FFFFFFeVUE5(VVD$7d$K!FT$7d$K!FT!4QA1!ME3E!Hf-E!Hf-G,G,D&r    c                 *   U R                   nU R                  n[        US S 2S4   USSS9u  p4n[        US S 2S4   USSS9u  p6n[        US S 2S4   USSS9u  p8n	[        XSS	S
S9u  pn[	        X\S   5        [	        X|S   5        [	        XS   5        g )Nr   r2   r|   r$   r	   rq   rr   r#   )r|   rq   r#   Tr   )r   r   r   r   r   )r)   r   r   r   r   r   r   r   edgeszbczr>   r.   ru   s                r   test_dd_binnumbers_unraveled0TestBinnedStatistic.test_dd_binnumbers_unraveled  s    FFFF,Qq!tWabIc,Qq!tWabIc,Qq!tWabIc0&|tEs 	V$V$V$r    c                 *   [         R                  R                  S5      n[         R                  R                  S5      n[         R                  " SSS5      nX3U4n[        XSUS9nUR                  n[        XSUS9nUR                  n[        XV5        g )	N'  r   r  r   r	   r#   r2   r$   )binned_statistic_result)r'   r   linspacer   r6   r   )r)   r   r   r%   resultr   r>   s          r   test_dd_binned_statistic_result3TestBinnedStatistic.test_dd_binned_statistic_result  s    IIZ(IIU#{{1a$D!$Q6=$Q6=CE  $r    c                 L   [         R                  R                  S5      n[         R                  R                  S5      n[         R                  " SSS5      n[         R                  " US5      nX3U4n[	        [
        SS9   [        XSUS	9  S S S 5        g ! , (       d  f       g = f)
Nr  r  r   r	   r#   zdifference is numerically 0matchr2   r$   )r'   r   r  appendrG   rH   r   )r)   r   r   r%   s       r   test_dd_zero_dedges'TestBinnedStatistic.test_dd_zero_dedges  sz    IIZ(IIU#{{1a$yyq!D!:-JKf48 LKKs    B
B#c                    [        [        SS9   [        U R                  /U R                  SS//S9  S S S 5        [        [        SS9   [        U R
                  U R                  /U R                  SS/SS//S9  S S S 5        [        [        SS9   [        U R
                  U R                  /U R                  SS/SS//S9  S S S 5        [        [        SS9   [        U R
                  U R                  /U R                  SS//S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nv= f! , (       d  f       g = f)	NzIn range, start must be <= stopr"  r	   r   r~   z.In dimension 1 of range, start must be <= stopz.In dimension 2 of range, start must be <= stopz(range given for 1 dimensions; 2 required)rG   rH   r   r   r   r   )r)   s    r   test_dd_range_errors(TestBinnedStatistic.test_dd_range_errors  s<    :!BD$&&()1vh0D FH   0$&&()1v1v&68H
 FH   0$&&()1v1v&68H
 @B   0$&&()1vh0B BD DH H
H H
B Bs/   $D	2D"2D3/E
D"
D03
E
Ec                     [         R                  " SS/[         R                  S9n[        US SSS9u  n  n[	        U[         R                  " / SQ[         R
                  S95        g )Nr   ghw?)dtyper"   r   r$   )r	   r   r   r   r	   )r'   rs   float32r   r   float64)r)   r   r   r   s       r   test_binned_statistic_float321TestBinnedStatistic.test_binned_statistic_float32  sI    HHa_BJJ7%awQ?
abhhbjjIJr    c                 2   / nSn[        U5       H  nUSSU-  -
  /-  nM     [        R                  " SSS5      n[        U[        R                  " [        U5      5      U/SS9u  pVn[        R                  " XS9u  p[        XX5        [        US   U	5        g )	Nrq   r	   g?r   r   r4   )r%   r6   r$   )r   r'   r  r   oneslenr(   r   )
r)   r   r   rv   r%   rY   r+   r,   rZ   r.   s
             r   test_gh14332 TestBinnedStatistic.test_gh14332  s    tA!CF(OA  {{1Qr".q"''#a&/59FeMb||A1#q	6*r    r+  r6   r"   c                 (    U S-  R                  5       $ )Nrr   r4   r   s    r   <lambda>TestBinnedStatistic.<lambda>'  s    adZZ\r    c                 .    U S-  R                  5       S-  $ )Nrr                 ?r6  r7  s    r   r8  r9  (  s    adZZ\B5Fr    c                   ^ U4S jn[         R                  R                  S5      nSnUR                  US9nUS:  nUR                  US9nU[         R                  L a  XR                  US9S-  -   n[	        XhTSS9u  n	  n
[         R
                  " U" X)    5      U" X   5      /5      n[        X5        U	R                  [         R                  " UR                  [         R                  5      :X  d   eg )	Nc                 6   > TS:X  a  [        U 5      $ T" U 5      $ )Nr"   )r2  )r   r6   s    r   ref_statistic6TestBinnedStatistic.test_dd_all.<locals>.ref_statistic*  s    &'13q6Cy|Cr    l   #t%i r#   r   g      ?r;  rr   r$   )
r'   r   default_rng
complex128r   rs   r   r+  result_typer-  )r)   r+  r6   r>  r   nr   rv   r   r   r   refs     `         r   test_dd_allTestBinnedStatistic.test_dd_all$  s    	D ii##$45JJAJHJJAJBMM!JJAJ&r))A(yqA
ahhae,mAD.ABC"zzR^^CIIrzzBBBBr     N)?__name__
__module____qualname____firstlineno__classmethodr   r/   r7   r?   rC   rL   rT   r[   r_   rb   rg   rk   rn   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r%  r(  r.  r3  pytestmarkparametrizer'   r-  rA  r2   r3   r4   r;   rf   rj   rE  __static_attributes__rG  r    r   r   r      so   , ,(7&& -(((((((+#&-
&
&	&
&
&
&&+ #&&.(-((((((+' %% 90.K
+ [[Wrzz2==&AB[[[277BIIrvvrvv+-662667+A+F+H IC	I C
Cr    r   )numpyr'   numpy.testingr   rM  r   rG   scipy.statsr   r   r   scipy._lib._utilr   common_testsr
   r   rG  r    r   <module>rV     s/     )  *. . / -lC lCr    