U
    ?h                     @   s(  d dl Zd dlmZmZ d dlmZmZ d dlZdd Z	dd Z
dd	 Zd
d Zejdedd d d gd d d d gd ddd ggd dfedd d d gd d d d gd ddd ggddfedd d d gd d d d gd ddd ggddfed dd d d gd d d d d gd d ddd ggd dfgdd Zdd Zdd ZdS )    N)assert_array_almost_equalassert_)
csr_matrixhstackc                 C   s>   || |f }|| |f }t || d  tt|tk d S )Nr   )r   toarrayr   typer   )islXXcsrZnp_sliceZ	csr_slice r   M/var/www/html/venv/lib/python3.8/site-packages/scipy/sparse/tests/test_csr.py_check_csr_rowslice   s    r   c                  C   s   d} t jd t j| | f}d||dk< t|}td d d td d dtdddtdddg}t| D ]}|D ]}t|||| qpqhd S )N
   r   ffffff?      )nprandomseedr   sliceranger   )Nr
   r   Zslicesr   r	   r   r   r   test_csr_rowslice   s    



r   c                  C   s   d} t jd t j| | f}d||dk< t|}t| D ]D}|||d d d f }||}t||  tt	|tk q<d S Nr   r   r   r   )
r   r   r   r   r   Zgetrowr   r   r   r   )r   r
   r   r   Zarr_rowZcsr_rowr   r   r   test_csr_getrow   s    
r   c                  C   s   d} t jd t j| | f}d||dk< t|}t| D ]D}|d d ||d f }||}t||  tt	|tk q<d S r   )
r   r   r   r   r   Zgetcolr   r   r   r   )r   r
   r   r   Zarr_colZcsr_colr   r   r   test_csr_getcol.   s    
r   z"matrix_input, axis, expected_shaper   r      )r      )r   r   both)r   r   )r      c                 C   s   | j jd d }|}|d }|dkrV| ||d d f j j}| ||d d f j j}nr|dkr| d d ||f j j}| d d ||f j j}n8|dkr| ||||f j j}| ||||f j j}||kst||kstd S )Nr   r   r!   )AshapeAssertionError)Zmatrix_inputZaxisZexpected_shapeZslice_1Zslice_2Zslice_3Zactual_shape_1Zactual_shape_2r   r   r   test_csr_empty_slices<   s    r&   c                  C   s   t dddgdddgddd	gg} d
dd
g}t|}d
dd
gd
dd
gd
dd
gg}t|}d
dd
gd
dd
gf}t|d t|d f}| |  }| |  }| | }	| | }
| | }| | }||k st|	|
k st||k std S )Nr   r   r   r   r    r"            FT)r   r   arrayr   allr%   )dataZlist_indices1Zarray_indices1Zlist_indices2Zarray_indices2Zlist_indices3Zarray_indices3Zslice_list1Zslice_array1Zslice_list2Zslice_array2Zslice_list3Zslice_array3r   r   r   test_csr_bool_indexinga   s      


r-   c                  C   s  t t jj} dg}dg}| d }d}|d g}|d g}t|||ff}t|||ff}t|d |d | k stt|jj|jj  krt jksn t|jj|jj  krt jksn tt	||gdd}	|	j || d kst|| d | kst|	jj|	jj  krt j
ks"n tt|j}
t|j}t	|
|gdd}|j|	jksXt|jjt j
kslt| | d g}t|||ff}t	||gdd}|jjt jkst|j | d kstdS )z
    Tests if hstack properly promotes to indices and indptr arrays to np.int64
    when using np.int32 during concatenation would result in either array
    overflowing.
    g      ?r   r   r   Zcsr)formatN)r   ZiinfoZint32maxr   r%   indicesZdtypeZindptrr   Zint64r$   )Z	max_int32r,   rowZmax_indices_1Zmax_indices_2Zcol_1Zcol_2ZX_1ZX_2ZX_hsZ	X_1_emptyZ	X_2_emptyZ
X_hs_emptyZcol_3ZX_3ZX_hs_32r   r   r   test_csr_hstack_int64t   s4    

$$(

r2   )numpyr   Znumpy.testingr   r   Zscipy.sparser   r   Zpytestr   r   r   r   markZparametrizer&   r-   r2   r   r   r   r   <module>   sR   

 

 

  
