
    Cd                       d dl mZ d dlmZ d dlZd dlmZ d dlm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ  ej        ej        j                  d             Z eej                  d'd            Zd Z eej        j                  Z eej        j                  Z eej        j                  Z eej        j                   Z  eej        j!                  Z! eej                  d             Z" eej                  d             Z# eej                  d             Z$ eej                  d             Z% eej                  d             Z& eej                  d(d            Z' eej                  d'd            Z( eej                  d             Z) eej                  d             Z*ej        j+        dfdZ, eej                  ej        j+        dfd            Zd Z- eej                  d             Z. eej                  d)d            Z/d*d Z0 eej                  d+d!            Z1 eej        j2                  d"             Z3 eej        j2                  d#             Z4 eej        j2                  d$             Z5 eej        j2                  d%             Z eej        j2                  d*d&            Z6dS ),    )annotationswrapsN)chunk)
asanyarray	blockwiseelemwise
map_blocks)	reduction_average)nonzero)normalize_token)derived_fromc                    t          | j                  }t          | j                  }t          | j                  }|||fS N)r   datamask
fill_value)xr   r   r   s       -lib/python3.11/site-packages/dask/array/ma.pynormalize_masked_arrayr      s<    16""D16""D ..J$
##    c                l    t          |           } |                     t          j        j        |          S N)r   )r   r
   npmafilledar   s     r   r   r      s'    1A<<<<<<r   c                <     t                      fd            }|S )Nc           	     L   t          |           } t          |          }t          t          | j                            d d d         }t          t          |j                            d d d         }t	          ||t
                    }t          || |||| j                  S )N)keydtype)r   tuplerangendimmaxlenr   r&   )r    valueaindsvindsoindsfs        r   _z_wrap_masked.<locals>._   s    qMM5!!eAFmm$$TTrT*eEJ''((2.E5c***E1eUEIIIIr   r   )r0   r1   s   ` r   _wrap_maskedr2      s8    
1XXJ J J J XJ Hr   c           	         t          |           } t          |dd          rt          d          t          t	          | j                            }t          t          j        j	        || ||d| j
                  S )Nshape z1da.ma.masked_equal doesn't support array `value`sr%   )r   getattr
ValueErrorr'   r(   r)   r   r   r   masked_equalr&   )r    r,   indss      r   r8   r8   2   sj    1Augr"" NLMMMqvDRU'q$rQQQQr   c                d    t          |                               t          j        j                  S r   )r   r
   r   r   masked_invalidr    s    r   r;   r;   ;   s!    a==##BE$8999r   c                l    t          |           } |                     t          j        j        ||          S r   )r   r
   r   r   masked_insider   v1v2s      r   r>   r>   @   s(    1A<<+R444r   c                l    t          |           } |                     t          j        j        ||          S r   )r   r
   r   r   masked_outsider?   s      r   rC   rC   F   s(    1A<<,b"555r   c           	        t          | dd          }|r&||j        k    rt          d|d|j        d          t          |           } t          |          }t	          t          |j                            }t	          t          | j                            }t          t          j	        j
        || ||||j                  S )Nr4   r5   z<Inconsistant shape between the condition and the input (got z and )r%   )r6   r4   
IndexErrorr   r'   r(   r)   r   r   r   masked_wherer&   )	conditionr    cshaper-   cindss        r   rG   rG   L   s    Y,,F 
&AG##j'-vvqwww8
 
 	
 9%%I1A%--  E%	''((E
E9eQQW   r   h㈵>:0yE>Tc                    t          |           } t          |dd          rt          d          t          t          j        j        | ||||          S )Nr4   r5   z2da.ma.masked_values doesn't support array `value`s)rtolatolshrink)r   r6   r7   r
   r   r   masked_values)r   r,   rN   rO   rP   s        r   rQ   rQ   ]   sZ    1Augr"" OMNNN
QDtF   r   c                l    t          |           } |                     t          j        j        |          S r   )r   r
   r   r   fix_invalidr   s     r   rS   rS   g   s(    1A<<)j<AAAr   c                h    t          |           } |                     t          j        j                  S r   )r   r
   r   r   getdatar<   s    r   rU   rU   m   s#    1A<<&&&r   c                h    t          |           } |                     t          j        j                  S r   )r   r
   r   r   getmaskarrayr<   s    r   rW   rW   s   s$    1A<<*+++r   c                D    d|v r|d= t          j        j        | f||d|S )Nchunks)r   r&   )r   r   masked_array)r   r   masked_dtypekwargss       r   _masked_arrayr]   y   s7    685dL\LLVLLLr   c                   t          |           } t          t          | j                            }|| |g}t	          |dd          rt          d          ||d<   |t          j        j        urt          |          }|j	        dk    r|
                    d| j        z            }nZ| j        |j        k    rJt          j                            dt          | j                  dt          |j                  d	          |                    ||g           d
|v r|d
         |d<   n
| j        |d
<   t!          t"          g|R i |S )Nr4   r5   z#non-scalar fill_value not supportedr      )r_   z,Mask and data not compatible: data shape is z, and mask shape is .r&   r[   )r   r'   r(   r)   r6   r7   r   r   nomasksizereshaper4   	MaskErrorreprextendr&   r   r]   )r   r   r   r\   r9   argindss         r   rZ   rZ      sS   dDty!!""DT4 Gz7B'' @>???%F<25<$9>><<ty 011DDZ4:%%%/// dj))))4
+;+;+;+;=  
 	d|$$$&!'~*w]7W777777r   c                    t          | t          j        j                  r5|                                 } t          j                            | |           | S r   )
isinstancer   r   rZ   copyset_fill_value)r   r   s     r   _set_fill_valuerl      sF    !RU'(( 7FFHH
Q:666Hr   c                   t          |           } t          |dd          rt          d          t          j        j                            || j                  }|                     t          |          }|j
        | _
        |j        | _        d S )Nr4   r5   z3da.ma.set_fill_value doesn't support array `value`s)r   r6   r7   r   r   core_check_fill_valuer&   r
   rl   daskname_name)r    r   ress      r   rk   rk      su    1Az7B'' PNOOO--j!'BBJ
,,

3
3CXAFhAGGGr   Fc                ,    t          | |||d|          S )NT)	is_maskedkeepdimsr   )r    axisweightsreturnedrv   s        r   averagerz      s    AtWh$RRRRr   c                F    t           j                            | ||          S )N)rw   rv   )r   r   count)r   rw   rv   s      r   _chunk_countr}      s    5;;qth;777r   c           
     b    t          | t          t          j        ||t          j        |d           S )N)rw   rv   r&   split_everyout)r   r}   r   sumr   intp)r    rw   rv   r   s       r   r|   r|      s5    		g	 	 	 	r   c                d    t          |           }  | j        t          j        j        j        fi |S r   )r   r
   r   r   rn   	ones_liker    r\   s     r   r   r      s.    1A1<
,77777r   c                d    t          |           }  | j        t          j        j        j        fi |S r   )r   r
   r   r   rn   
zeros_liker   s     r   r   r      .    1A1<
-88888r   c                d    t          |           }  | j        t          j        j        j        fi |S r   )r   r
   r   r   rn   
empty_liker   s     r   r   r      r   r   c                \    t          t          |           t          |            z            S r   )_nonzerorU   rW   r<   s    r   r   r      s$    GAJJ,q//!11222r   c                    |d u |d u k    rt          d          ||t          |           S t          t          j        j        | ||          S )Nz1either both or neither of x and y should be given)r7   r   r	   r   r   where)rH   r   ys      r   r   r      sS    	T	qDy!!LMMM			y!!!Y1555r   r   )rK   rL   T)NNFF)NN)NFN)7
__future__r   	functoolsr   numpyr   
dask.arrayr   dask.array.corer   r   r	   r
   dask.array.reductionsr   dask.array.routinesr   r   r   	dask.baser   
dask.utilsr   registerr   rZ   r   r   r2   masked_greatermasked_greater_equalmasked_lessmasked_less_equalmasked_not_equalr8   r;   r>   rC   rG   rQ   rS   rU   rW   ra   r]   rl   rk   rz   r}   r|   rn   r   r   r   r   r5   r   r   <module>r      s   " " " " " "                 G G G G G G G G G G G G + + + + + + ( ( ( ( ( ( 3 3 3 3 3 3 % % % % % % # # # # # # "%,--$ $ .-$ be= = = =

 
 
 be233#|BE$>?? l25,-- L!899 < 677  beR R R be: : : be5 5 5
 be6 6 6
 be    be    beB B B B
 be' ' '
 be, , ,
  U\ M M M M beELT 8 8 8 8:   be   beS S S S8 8 8 8 be
 
 
 
 bej8 8 8
 bej9 9 9
 bej9 9 9
 bej3 3 3 bej6 6 6 6 6 6r   