L iFdZdZgdZddlmZmZddlmZdZd dZ d d Z y) z.Functions to extract parts of sparse matrices zrestructuredtext en)findtriltriu) coo_matrix coo_array)sparrayct|d}|j|jdk7}|j||j||j|fS)aTReturn the indices and values of the nonzero elements of a matrix Parameters ---------- A : dense or sparse array or matrix Matrix whose nonzero elements are desired. Returns ------- (I,J,V) : tuple of arrays I,J, and V contain the row indices, column indices, and values of the nonzero entries. Examples -------- >>> from scipy.sparse import csr_array, find >>> A = csr_array([[7.0, 8.0, 0],[0, 0, 9.0]]) >>> find(A) (array([0, 0, 1], dtype=int32), array([0, 1, 2], dtype=int32), array([ 7., 8., 9.])) Tcopy)rsum_duplicatesdatarowcol)Anz_masks [/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/sparse/_extract.pyrr sN4 !$AffkG 55>155>166'? ::NcHt|trtnt}||d}|j|z|j k\}|j|}|j |}|j |}||||ff|j|j}|j|S)a.Return the lower triangular portion of a sparse array or matrix Returns the elements on or below the k-th diagonal of A. - k = 0 corresponds to the main diagonal - k > 0 is above the main diagonal - k < 0 is below the main diagonal Parameters ---------- A : dense or sparse array or matrix Matrix whose lower trianglar portion is desired. k : integer : optional The top-most diagonal of the lower triangle. format : string Sparse format of the result, e.g. format="csr", etc. Returns ------- L : sparse matrix Lower triangular portion of A in sparse format. See Also -------- triu : upper triangle in sparse format Examples -------- >>> from scipy.sparse import csr_array, tril >>> A = csr_array([[1, 2, 0, 0, 3], [4, 5, 0, 6, 7], [0, 0, 8, 9, 0]], ... dtype='int32') >>> A.toarray() array([[1, 2, 0, 0, 3], [4, 5, 0, 6, 7], [0, 0, 8, 9, 0]], dtype=int32) >>> tril(A).toarray() array([[1, 0, 0, 0, 0], [4, 5, 0, 0, 0], [0, 0, 8, 0, 0]], dtype=int32) >>> tril(A).nnz 4 >>> tril(A, k=1).toarray() array([[1, 2, 0, 0, 0], [4, 5, 0, 0, 0], [0, 0, 8, 9, 0]], dtype=int32) >>> tril(A, k=-1).toarray() array([[0, 0, 0, 0, 0], [4, 0, 0, 0, 0], [0, 0, 0, 0, 0]], dtype=int32) >>> tril(A, format='csc') Fr shapedtype isinstancerrrrrrrrasformat rkformat coo_sparsemaskrrrnew_coos rrr.sl)G4*J 15!A 5519 D %%+C %%+C 66$ 0 is above the main diagonal - k < 0 is below the main diagonal Parameters ---------- A : dense or sparse array or matrix Matrix whose upper trianglar portion is desired. k : integer : optional The bottom-most diagonal of the upper triangle. format : string Sparse format of the result, e.g. format="csr", etc. Returns ------- L : sparse array or matrix Upper triangular portion of A in sparse format. Sparse array if A is a sparse array, otherwise matrix. See Also -------- tril : lower triangle in sparse format Examples -------- >>> from scipy.sparse import csr_array, triu >>> A = csr_array([[1, 2, 0, 0, 3], [4, 5, 0, 6, 7], [0, 0, 8, 9, 0]], ... dtype='int32') >>> A.toarray() array([[1, 2, 0, 0, 3], [4, 5, 0, 6, 7], [0, 0, 8, 9, 0]], dtype=int32) >>> triu(A).toarray() array([[1, 2, 0, 0, 3], [0, 5, 0, 6, 7], [0, 0, 8, 9, 0]], dtype=int32) >>> triu(A).nnz 8 >>> triu(A, k=1).toarray() array([[0, 2, 0, 0, 3], [0, 0, 0, 6, 7], [0, 0, 0, 9, 0]], dtype=int32) >>> triu(A, k=-1).toarray() array([[1, 2, 0, 0, 3], [4, 5, 0, 6, 7], [0, 0, 8, 9, 0]], dtype=int32) >>> triu(A, format='csc') Fr rrrs rrrqsn)G4*J 15!A 5519 D %%+C %%+C 66$r)s1& "(;B@$FA$r