B
    n\N              
   @   s  d dl mZmZ 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d5d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d0d.dd e%d+ e%d1 ed2d.dd e%d+ e%d3 ed4d.dd dS )6    )divisionprint_functionN            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   sj   | j }td td|  d\}}tdt  d| |d td|  d\}}tdt  d| |d d S )	Nz2--------------------------------------------------z%s 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_1v;   s    r0   r   c	             C   sh   t d t d|   d| d }	}
tdt  |
|d t d|   d| d }	}
tdt  |
|d d S )	Nz2--------------------------------------------------z%s on small arraysznm%ssz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_methodsH   s    r4   c             C   sj   | j }td td|  d\}}tdt  d| |d td|  d\}}tdt  d| |d d S )	Nz2--------------------------------------------------z%s on small arrays)znumpy.maz	nmxs,nmysz!%(module)s.%(funcname)s(%(data)s)z%11s)r"   r#   z%s on large arrays)znumpy.maz	nmxl,nmyl)r(   r   r%   r)   )r*   r#   r3   r+   r&   ysnmysr,   r'   ylnmylr-   r.   r/   r   r   r   compare_functions_2vT   s    r9   __main__Zraveli  )r#   	conjugatezZ	transposeZ
compressed__getitem__0z(0,0)z[0,-1]__setitem__z0, 17)r#   r3   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   )&Z
__future__r   r   r   r!   ZrandomZuniformZreshaper+   r5   ZzsZm1Zm2ZmaZarrayr&   r6   Znmzsr,   r7   ZzlZmaskxZmaskyr'   r8   Znmzlr%   r0   r4   r9   r(   ZsinlogZsqrtZmultiplyZdivideZpowerr   r   r   r   r   <module>   sp   	







