B
    Vb              
   @   s  d dl Z d dlZejdddddZejdddddZede  Zdd	d	gd	d	dggZdd	dgd	d	dggZ	ej
jeed
Zej
jee	d
Zej
jeed
ZejdddddZejdddddZede  ZedkZedk Zej
jeed
Zej
jeed
Zej
jeed
Zd4ddZdeeeefddZdddeeeefddZddeeeeeeeef
ddZedkreej eej eej eej eej  eej! edddd eddddd ed ddd ed!ddd ed"d#dd ed"d$dd ed"d%dd ed&d'dd	d( ed&d)dd	d( e"d* e"d+ ed,d-dd e"d* e"d. ed/d-dd e"d* e"d0 ed1d-dd e"d* e"d2 ed3d-dd dS )5    N            y              ?TF)maski'  d   g?g   c             C   s   ddddg}ddddg}t d	|| f d
d dd dD }dd| }tj| |d}t|||| }	|	dkrtttt	|	d  d}
nd}
t d||d|	||
  ||
 f  d S )NsZmsu   µsnsr   g     @@g    .Ag    eAz%s : %-50s :  )endc             S   s   g | ]}d t |d  qS )z%ss,nm%ss,%sl,nm%sl   )tuple).0x r   -lib/python3.7/site-packages/numpy/ma/bench.py
<listcomp>+   s    ztimer.<locals>.<listcomp>Zxyzz"from __main__ import numpy, ma, %s,)Zstmtsetupg        r   z&%d loops, best of %d: %.*g %s per loop)
printjointimeitTimerminrepeatintnumpyZfloorZlog10)r   vnloopZnrepZunitsZscalingZvarnamesr   r   Zbestorderr   r   r   timer'   s    "
r#   c       	      C   sl   | j }td t| d d\}}tdt  d| |d td|  d\}}tdt  d| |d d S )	Nz2--------------------------------------------------z on small arrays)znumpy.manmxsz!%(module)s.%(funcname)s(%(data)s)z%11s)r    r!   z%s on large arrays)znumpy.manmxl)__name__r   r#   locals)	funcr!   xsr$   xlr%   funcnamemoduledatar   r   r   compare_functions_1v9   s    r.   r   c	             C   sn   t d t |  d d| dd }	}
tdt  |
|d t d|   d	| d }	}
tdt  |
|d d S )
Nz2--------------------------------------------------z on small arraysZnmlznumpy.maz!%(data)s.%(methodname)s(%(args)s))r    r!   z%s on large arraysznm%sl)r   r#   r'   )Z
methodnameargsvarsr!   testr)   r$   r*   r%   r-   Zverr   r   r   compare_methodsF   s    r3   c             C   sn   | j }td t| d d\}}tdt  d| |d t| d d\}}tdt  d| |d d S )	Nz2--------------------------------------------------z on small arrays)znumpy.maz	nmxs,nmysz!%(module)s.%(funcname)s(%(data)s)z%11s)r    r!   z on large arrays)znumpy.maz	nmxl,nmyl)r&   r   r#   r'   )r(   r!   r2   r)   r$   ysnmysr*   r%   ylnmylr+   r,   r-   r   r   r   compare_functions_2vR   s    r8   __main__Zraveli  )r!   	conjugatezZ	transposeZ
compressed__getitem__0z(0,0)z[0,-1]__setitem__z0, 17)r!   r2   z	(0,0), 17z2--------------------------------------------------z__setitem__ on small arraysz(nmxs.__setitem__((-1,0),numpy.ma.masked)znumpy.ma   z__setitem__ on large arraysz(nmxl.__setitem__((-1,0),numpy.ma.masked)zwhere on small arraysz numpy.ma.where(nmxs>2,nmxs,nmys)zwhere on large arraysz numpy.ma.where(nmxl>2,nmxl,nmyl))r	   r
   r   )#r   r   ZrandomZuniformZreshaper)   r4   ZzsZm1Zm2ZmaZarrayr$   r5   Znmzsr*   r6   ZzlZmaskxZmaskyr%   r7   Znmzlr#   r.   r3   r8   r&   ZsinlogZsqrtZmultiplyZdivideZpowerr   r   r   r   r   <module>   sn   	







