Hi,

On 20/05/15 08:54, Huayi Wei wrote:
Hi, Vincent,

Yes, my matrix is sparse.  I just move here from matlab, so I am a
newbie for sage and python.

The function you have offered can do the job. But I am worried about its
efficiency, because my sparse matrix
maybe very large which comes from Finite Element method.

The function I gave is not so bad, because if you have a sparse matrix accessing to a row (or even a slice of a row) gives you a sparse vector:

sage: m = matrix(100, sparse=True)
sage: v = m[5,5:]
sage: v.is_sparse()
True

Thouh I am not sure about the efficiency of

sage: m[5,5:] = v

when m is a sparse matrix and v a sparse vector. I quickly look at the code and it seems to run through all entries of v which is very stupid.

So about the efficient ways for  sparse matrix, can you give me some
suggestion?  Thanks very much.

If your matrix is sparse I would do

def triu(m):
    t = matrix(m.base_ring(), m.nrows(), sparse=True)
    for (i,j) in m.nonzero_positions():
        if i <= j:
            t[i,j] = m[i,j]
    return t

Depending whether you want the diagonal or not you have to adjust the inequality for being strict or not.

Best,
Vincent

--
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To post to this group, send email to sage-support@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.

Reply via email to