a
    ˆù»j/"  ã                   @   sB  d dl Zd dlZd dlmZ dd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zej dg d ¢¡ed!œd"d#„ƒZej deg d$¢g d$¢ƒ¡eeef d!œd%d&„ƒZej dg d'¢¡ed!œd(d)„ƒZd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Z d6d7„ Z!d8d9„ Z"dS ):é    N)Ú	coo_arrayc                  C   sš   t dƒ} | jdksJ ‚t |  ¡ t d¡¡s0J ‚t dƒ}|jdksFJ ‚t | ¡ t d¡¡s`J ‚tjtdd�� t dƒ W d   ƒ n1 sŒ0    Y  d S )N©é   ©r   é   zinvalid input format©Úmatch)r   r   r   )	r   ÚshapeÚnpÚarray_equalÚtoarrayÚzerosÚpytestÚraisesÚ	TypeError)Úempty1dZempty2d© r   úAE:\soccer\ml_env\Lib\site-packages\scipy/sparse/tests/test_coo.pyÚtest_shape_constructor   s    r   c                  C   sÆ   t g d¢ƒ} | jdksJ ‚t |  ¡ t g d¢¡¡s8J ‚t g d¢g d¢gƒ}|jdksZJ ‚t | ¡ t g d¢g d¢g¡¡s€J ‚tjtdd��$ t dggdgggƒ W d   ƒ n1 s¸0    Y  d S )	N©é   r   r   r   ©é   é   é   ©r   r   úshape must be a 1- or 2-tupler   r   r   ©	r   r	   r
   r   r   Úarrayr   r   Ú
ValueError©Zres1dZres2dr   r   r   Útest_dense_constructor   s    &r!   c                  C   sÒ   t g d¢dd�} | jdksJ ‚t |  ¡ t g d¢¡¡s<J ‚t g d¢g d¢gdd�}|jdksbJ ‚t | ¡ t g d¢g d¢g¡¡sˆJ ‚tjtdd��( t dggd	gggd
d� W d   ƒ n1 sÄ0    Y  d S )Nr   r   ©r	   r   r   r   r   r   r   )r   r   r   r   r    r   r   r   Ú!test_dense_constructor_with_shape    s    &r#   c                   C   sF  t jtdd��  tg d¢dd� W d   ƒ n1 s40    Y  t jtdd��  tg d¢dd� W d   ƒ n1 sr0    Y  t jtdd��" tg d¢gdd� W d   ƒ n1 s²0    Y  t jtdd��& td	gd
gffdd� W d   ƒ n1 sö0    Y  t jtdd��" td	gdgffƒ W d   ƒ n1 �s80    Y  d S )Nzinconsistent shapesr   r   ©r   r"   ©r   r   r   z)axis 0 index 2 exceeds matrix dimension 2r   r   )r   znegative axis 0 index: -1éÿÿÿÿ)r   r   r   r   r   r   r   r   Ú.test_dense_constructor_with_inconsistent_shape-   s    ..0ÿ4r'   c                  C   s<   t dƒ} t | ƒ}|jdksJ ‚t | ¡ t d¡¡s8J ‚d S )Nr   )r   r	   r
   r   r   r   )r   Úresr   r   r   Útest_1d_sparse_constructor?   s    r)   c                  C   sF   t ddgddgffƒ} | jdks$J ‚t |  ¡ t g d¢¡¡sBJ ‚d S )Né	   é   r   r   r   )r   r*   r+   ©r   r	   r
   r   r   r   ©r(   r   r   r   Útest_1d_tuple_constructorF   s    r.   c                  C   sJ   t ddgddgffdd�} | jdks(J ‚t |  ¡ t g d¢¡¡sFJ ‚d S )Nr*   r+   r   r   r$   r"   )r   r*   r+   r   r,   r-   r   r   r   Ú$test_1d_tuple_constructor_with_shapeL   s    r/   c                  C   s€   t dƒ} tjtdd�� d| d< W d   ƒ n1 s40    Y  tjtdd��  | dd d …f  W d   ƒ n1 sr0    Y  d S )N)r   r   z3'coo_array' object does not support item assignmentr   r   )r   r   z''coo_array' object is not subscriptabler   )r   r   r   r   )Zcoo_2dr   r   r   Útest_non_subscriptabilityQ   s    ÿ&ÿr0   c                  C   sì   t g d¢ƒ} | jdksJ ‚|  d¡}|jdks2J ‚t | ¡ t dgdgdgg¡¡sXJ ‚|  d¡}|jdkspJ ‚t | ¡ t g d¢g¡¡s�J ‚t g d¢g d	¢gƒ}|jd
ks²J ‚| d¡}|jdksÊJ ‚t | ¡ t g d¢¡¡sèJ ‚d S )N©r   r   r   r   r%   r   r   r   )r   r   ©r   r   r   ©r   r   r   r   )r   )r   r   r   r   r   r   )r   r	   Zreshaper
   r   r   r   )Úarr1dZcol_vecZrow_vecÚarr2dZflatr   r   r   Útest_reshape\   s    
&
 
r6   c                  C   s\   t g d¢ƒ} | jdksJ ‚| jdks(J ‚t g d¢g d¢gƒ}|jdksJJ ‚|jdksXJ ‚d S )Nr1   r   r   r2   r3   r   r   )r   r	   Únnz©r4   r5   r   r   r   Útest_nnzp   s    r9   c               	   C   sŽ   t g d¢ƒj} | jdksJ ‚t |  ¡ t g d¢¡¡s:J ‚t g d¢g d¢gƒj}|jdks^J ‚t | ¡ t ddgddgdd	gg¡¡sŠJ ‚d S )
Nr1   r   r2   r3   r   r   r   r   r   )r   ÚTr	   r
   r   r   r   r8   r   r   r   Útest_transposez   s    r;   c                  C   s"  t g d¢ƒjdd�} | jdks"J ‚t |  ¡ t g d¢¡¡s@J ‚t g d¢g d¢gƒjdd�}|jdksjJ ‚t | ¡ t g d¢g d¢g¡¡s�J ‚tjt	d	d
��$ t g d¢ƒjdd� W d   ƒ n1 sÈ0    Y  tjt	dd
��, t g d¢g d¢gƒjdd� W d   ƒ n1 �s0    Y  d S )Nr1   )r   )Zaxesr   r2   r3   )r   r   r   z"axes don't match matrix dimensionsr   zrepeated axis in transpose)r   r   )
r   Z	transposer	   r
   r   r   r   r   r   r   r8   r   r   r   Útest_transpose_with_axis„   s    &2r<   c                  C   sð   t g d¢ƒ} t | jt g d¢¡¡s(J ‚t | jt | j¡¡sBJ ‚| jj| jjksVJ ‚| jjj	du shJ ‚g d¢| _t
| jƒdks„J ‚t | jt g d¢¡¡s J ‚| jj| jjks´J ‚tjtdd�� g d¢| _W d   ƒ n1 sâ0    Y  d S )N©r   éþÿÿÿéýÿÿÿ)r   r   r   Fr   r   zcannot set row attributer   )r   r
   r   Úcolr   ÚrowZ
zeros_likeZdtypeÚflagsZ	writeableÚlenÚcoordsr   r   r   r-   r   r   r   Útest_1d_row_and_col”   s    
rE   c               	   C   sŽ   t g d¢ƒ} | j| j| j| j| jfD ]8}tjtdd�� |ƒ  W d   ƒ q$1 sR0    Y  q$| j	| j
fD ]}t |ƒ  ¡ |  ¡ ¡sjJ ‚qjd S )Nr=   zCannot convertr   )r   ZtocscZtocsrZtodiaZtolilZtobsrr   r   r   ZtocooZtodokr
   r   r   )r(   Úfr   r   r   Útest_1d_toformats¤   s    &rG   Úarg)r   r   r   r   r+   )rH   c                 C   sV   t  g d¢¡}t|ƒ}|j| dd� | | ¡ |j|jks>J ‚t  | ¡ |¡sRJ ‚d S )Nr=   F©Zrefcheck©r
   r   r   Úresizer	   r   r   ©rH   Údenr(   r   r   r   Útest_1d_resize­   s    
rN   )r   r   r   r   c                 C   sV   t  g d¢¡}t|ƒ}|j| dd� | | ¡ |j|jks>J ‚t  | ¡ |¡sRJ ‚d S )Nr1   FrI   rJ   rL   r   r   r   Útest_1d_to_2d_resize·   s    
rO   )r   r   r   r+   c                 C   s^   t  g d¢g d¢g¡}t|ƒ}|j| dd� | | ¡ |j|jksFJ ‚t  | ¡ |¡sZJ ‚d S )Nr1   )r   r   r   FrI   rJ   rL   r   r   r   Útest_2d_to_1d_resizeÂ   s    
rP   c                  C   sz   t g d¢g d¢ffƒ} | jdks$J ‚t |  ¡ t ddg¡¡sBJ ‚|  ¡  | jdksXJ ‚t |  ¡ t ddg¡¡svJ ‚d S )N)r   r   r   ©r   r   r   r   r   r   )r   r7   r
   r   r   r   Zsum_duplicates©r4   r   r   r   Útest_sum_duplicatesÌ   s    rS   c                  C   sÎ   t g d¢g d¢ffƒ} | jdks$J ‚|  ¡ dks4J ‚t |  ¡ t ddg¡¡sRJ ‚|  ¡  | jdkshJ ‚|  ¡ dksxJ ‚t |  ¡ t ddg¡¡s–J ‚t | jt dg¡¡s°J ‚t | j	t dg¡¡sÊJ ‚d S )N)r   r   r   rQ   r   r   r   )
r   r7   Zcount_nonzeror
   r   r   r   Zeliminate_zerosr@   rA   rR   r   r   r   Útest_eliminate_zerosÕ   s    rT   c                  C   sX   t  g d¢¡} t  g d¢¡}| | }t| ƒ| }t|ƒt|ƒksDJ ‚t  ||¡sTJ ‚d S )N©r   r>   r?   r   ©r   r   r   r   )r
   r   r   Útyper   ©Úden_aÚden_bÚexpr(   r   r   r   Útest_1d_add_denseâ   s    r\   c                  C   s^   t  g d¢¡} t  g d¢¡}tjtdd��  t| ƒt|ƒ  W d   ƒ n1 sP0    Y  d S )NrU   rV   z Cannot convert a 1d sparse arrayr   )r
   r   r   r   r   r   )rY   rZ   r   r   r   Útest_1d_add_sparseë   s    ÿr]   c                  C   sV   t  g d¢¡} t  g d¢¡}| | }t| ƒ| }t  |¡dksBJ ‚t  ||¡sRJ ‚d S )NrU   rV   r   )r
   r   r   Úndimr   rX   r   r   r   Útest_1d_matmul_vectorõ   s    r_   c                  C   sb   t  g d¢¡} t  g d¢g d¢g¡j}| | }t| ƒ| }t|ƒt|ƒksNJ ‚t  ||¡s^J ‚d S )NrU   rV   ©r   r   r   r   )r
   r   r:   r   rW   r   )rM   Úotherr[   r(   r   r   r   Útest_1d_matmul_multivectorþ   s    rb   c                  C   sJ   t  g d¢g d¢g¡} t| ƒ}| | j }||j }t  | ¡ |¡sFJ ‚d S )NrV   r`   )r
   r   r   r:   r   r   )rM   r5   r[   r(   r   r   r   Útest_2d_matmul_multivector  s
    

rc   c                  C   sL   t  g d¢¡} tjtdd�� t| ƒ ¡  W d   ƒ n1 s>0    Y  d S )NrU   z diagonal requires two dimensionsr   )r
   r   r   r   r   r   Zdiagonal)rM   r   r   r   Útest_1d_diagonal  s    rd   )#Únumpyr
   r   Zscipy.sparser   r   r!   r#   r'   r)   r.   r/   r0   r6   r9   r;   r<   rE   rG   ÚmarkZparametrizeÚintrN   ÚzipÚtuplerO   rP   rS   rT   r\   r]   r_   rb   rc   rd   r   r   r   r   Ú<module>   s<   

		
			
		