
    
Ng                         d dl Zd dlmZ dej        dej        dej        fdZdej        dedej        dej        fdZ G d	 d
e          ZdS )    N)OpRunselfindexreturnc                     g }t          | |          D ]&\  }}|                    ||d                             't          j        || j                                      |j                  S )Nr   dtype)zipappendnparrayr	   reshapeshape)r   r   resabs        a/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnx/reference/ops/op_gather_elements.pygather_numpy_2r      sh    
CD%    1

1QqT78Ctz***225;???    dimc                 $   |j         d |         |j         |dz   d          z   }| j         d |         | j         |dz   d          z   }||k    rt          d|d          t          j        | d|          }t          j        |d|          }	 t          j        ||d          }nY# t          $ rL}t          |j                   dk    r-t          |j                   dk    rt          | |          cY d }~S |d }~ww xY wt          j        |d|          S )N   zExcept for dimension z;, all dimensions of index and self should be the same size.r   wrap)mode   )r   
ValueErrorr   swapaxeschooselenr   )	r   r   r   idx_xsection_shapeself_xsection_shapedata_swapedindex_swapedgatheredes	            r   gather_numpyr&      sI   TcT*U[q-CC*TcT*TZa		-BB0007C 7 7 7
 
 	
 +dAs++K;ua--L9\;VDDD   |!""a''C0A,B,Ba,G,G!$........
 ;xC(((s$   B# #
C9-?C4,C92C44C9c                       e Zd ZddZdS )GatherElementsNc                     |j         dk    rt          j        d|j                  fS 	 t	          |||          fS # t
          $ r- t	          |||                    t                              fcY S w xY w)Nr   )r   r   )sizer   emptyr	   r&   	TypeErrorastypeint)r   dataindicesaxiss       r   _runzGatherElements._run(   s    <1HT44466	D tW5577 	D 	D 	D tW^^C-@-@AACCCC	Ds   ; 4A21A2)N)__name__
__module____qualname__r2    r   r   r(   r(   '   s.        D D D D D Dr   r(   )	numpyr   onnx.reference.op_runr   ndarrayr   r.   r&   r(   r6   r   r   <module>r:      s        ' ' ' ' ' '@ @BJ @2: @ @ @ @)rz ) )BJ )2: ) ) ) )*D D D D DU D D D D Dr   