a
    jUb**                     @   s  d Z ddl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 ddlmZ dd	lmZ dd
lmZmZ ejjZejjZejjZejjZejjZejjZe ej!e ej"e ej#e ej$iZ%e ej&e ej$kre%'e ej(e ej&i dddedfddZ)dddedfddZ*ddddedfddZ+ddddedfddZ,d3ddddZ-d4ddddZ.d5ddZ/dd Z0dd Z1ddd d!d"Z2d6dd#d$d%Z3d7ddd&d'Z4d8ddd(d)Z5d9ddd*d+Z6d:d,d-Z7d;d/d0Z8d<d1d2Z9dS )=zx
Array methods which are called by both the C-code for the method
and the Python code for the NumPy-namespace function

    N)nullcontext)
multiarray)umath)
asanyarray)numerictypes)_exceptions)_NoValue)pickle	os_fspathFTc                 C   s   t | |d ||||S N)umr_maximumaaxisoutkeepdimsinitialwhere r   2lib/python3.9/site-packages/numpy/core/_methods.py_amax&   s    r   c                 C   s   t | |d ||||S r   )umr_minimumr   r   r   r   _amin*   s    r   c                 C   s   t | ||||||S r   )umr_sumr   r   dtyper   r   r   r   r   r   r   _sum.   s    r   c                 C   s   t | ||||||S r   )umr_prodr   r   r   r   _prod2   s    r   r   c                C   s,   |du rt | ||||S t | |||||dS NTr   )umr_anyr   r   r   r   r   r   r   r   r   _any6   s    r#   c                C   s,   |du rt | ||||S t | |||||dS r    )umr_allr"   r   r   r   _all<   s    r%   c                 C   s   |du r^|d u r t t| j}nt|t s0|f}td}|D ]}|| jt|| j 9 }q>n&ddl	m
} t||| j|tjd |}|S )NT   r   )broadcast_to)tuplerangendim
isinstancentZintpshapemuZnormalize_axis_indexZnumpy.lib.stride_tricksr'   r   )arrr   r   r   itemsZaxr'   r   r   r   _count_reduce_itemsB   s    

r1   c                 C   sB   ddl m} || dkrdS zt| W S  ty<   Y dS 0 d S )Nr   )r*   F)Znumpy.core.fromnumericr*   umZisnan	TypeError)r   r*   r   r   r   _clip_dep_is_scalar_nan[   s    r4   c                 C   s   t | tjr| jj S dS )NF)r+   r.   ndarrayr   Zisnative)r   r   r   r   _clip_dep_is_byte_swappede   s    
r6   r   castingc             
   O   s   |d ur| |||d|S z| |d|i|W S  t jy } z<tjd|j|jtdd | ||dd|W  Y d }~S d }~0 0 d S )Nr7   r   zConverting the output of clip from {!r} to {!r} is deprecated. Pass `casting="unsafe"` explicitly to silence this warning, or correct the type of the variables.   
stacklevelunsafe)r   Z_UFuncOutputCastingErrorwarningswarnformatZfrom_toDeprecationWarning)Zufuncr   r8   argskwargser   r   r   _clip_dep_invoke_with_castingj   s    rE   )r8   c                K   s   |d u r|d u rt dt| sjt|sjd}t|rBtd }d}t|rVtd}d}|rjtjdtdd |d u rttj	| |f||d|S |d u rttj
| |f||d|S ttj| ||f||d|S d S )	NzOne of max or min must be givenFinfTa  Passing `np.nan` to mean no clipping in np.clip has always been unreliable, and is now deprecated. In future, this will always return nan, like it already does when min or max are arrays that contain nan. To skip a bound, pass either None or an np.inf of an appropriate sign.r9   r:   r7   )
ValueErrorr6   r4   floatr=   r>   rA   rE   r2   minimummaximumZclip)r   minmaxr   r8   rC   Zusing_deprecated_nanr   r   r   _clip}   sN    

rM   c          
      C   s&  t | }d}t||||d}|du r.|dkrNnt|dkd drNtjdtdd |d u rt|jjt	j
t	jfrxtd	}nt|jjt	jrtd
}d}t||||||d}	t|	tjrtj|	||	ddd}	|r|d u r|j|	}	n>t|	dr|r|j|	| }	n|	j|	| }	n|	| }	|	S )NFr   r   Tr   r   zMean of empty slice.r9   r:   f8Zf4r   r<   r   r8   Zsubokr   )r   r1   r!   r=   r>   RuntimeWarning
issubclassr   typer,   integerbool_r.   Zfloat16r   r+   r5   r2   true_dividehasattr)
r   r   r   r   r   r   r/   Zis_float16_resultrcountretr   r   r   _mean   s0    "

r[   c                C   s  t | }t||||d}|du r*||krJnt||kd drJtjdtdd |d u rrt|jjt	j
t	jfrrtd}t|||d|d}	|jdkr|}
n||	j}
t|	tjrtj|	|
|	d	d
d}	n|	j|	| }	t ||	 }t|jjt	jt	j
frtj|||d}nh|jtv rX|jt|j dfd}tj|||d tj|d |d |jdj}ntj|t||dj}t||||||d}t|| d}t|tjrtj|||d	d
d}n&t|dr|j|| }n|| }|S )NrN   TrO   z!Degrees of freedom <= 0 for slicer9   r:   rP   r   r<   FrQ   r   )r9   )r   ).r   ).r&   r   )r   r1   r!   r=   r>   rR   rS   r   rT   r,   rU   rV   r.   r   r*   Zreshaper-   r+   r5   r2   rW   Zfloatingmultiply_complex_to_floatZviewaddreal	conjugaterJ   rX   )r   r   r   r   ddofr   r   r/   rY   ZarrmeanZdivxZxvrZ   r   r   r   _var   sF    "


rd   c             	   C   s^   t | ||||||d}t|tjr2tj||d}n(t|drP|jt|}n
t|}|S )N)r   r   r   rb   r   r   r\   r   )	rd   r+   r.   r5   r2   ZsqrtrX   r   rT   )r   r   r   r   rb   r   r   rZ   r   r   r   _std  s    

re   c              	   C   s&   t t| |d ||t| |d d ||S r   )r2   subtractr   r   )r   r   r   r   r   r   r   _ptp  s
    rg   r9   c                 C   sZ   t |drt|}ntt|d}| }tj| ||d W d    n1 sL0    Y  d S )Nwritewbprotocol)rX   r   openr
   r	   dump)selffilerk   ctxfr   r   r   _dump  s
    

rr   c                 C   s   t j| |dS )Nrj   )r	   dumps)rn   rk   r   r   r   _dumps!  s    rt   )NNNF)NNNF)FT)NNN)NNNF)NNNr   F)NNNr   F)NNF)r9   )r9   ):__doc__r=   
contextlibr   Z
numpy.corer   r.   r   r2   Znumpy.core.multiarrayr   r   r,   r   Znumpy._globalsr   Znumpy.compatr	   r
   rJ   reducer   rI   r   r_   r   r]   r   Z
logical_orr!   Zlogical_andr$   r   ZcsingleZsingleZcdoubleZdoubler^   Z
longdoubleupdateZclongdoubler   r   r   r   r#   r%   r1   r4   r6   rE   rM   r[   rd   re   rg   rr   rt   r   r   r   r   <module>   sf   





%!A

