2

I'm having trouble resizing a matrix - the set_shape function seems to have no effect:

>>> M
<14x3562 sparse matrix of type '<type 'numpy.float32'>'
   with 6136 stored elements in LInked List format>
>>> new_shape = (15,3562)
>>> M.set_shape(new_shape)
>>> M
<14x3562 sparse matrix of type '<type 'numpy.float32'>'
   with 6136 stored elements in LInked List format>

Anyone else come across this?

I also tried doing this by hand, i.e.

>>> M._shape = new_shape
>>> M.data = np.concatenate(M.data, np.empty((0,0), dtype=np.float32))

but that throws up an error:

*** TypeError: only length-1 arrays can be converted to Python scalars

or

>>> M.data = np.concatenate(M.data, [])
*** TypeError: an integer is required

For info:

  • Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
  • scipy 0.11.0.dev-03f9e4a

1 Answer 1

5

If you just want to add a row of zeros at the end:

>>> M = sp.lil_matrix((14, 3562))
>>> sp.vstack([M, sp.lil_matrix((1, 3562))])
<15x3562 sparse matrix of type '<type 'numpy.float64'>'
        with 0 stored elements in COOrdinate format>
Sign up to request clarification or add additional context in comments.

4 Comments

Weirdly that gives me an error: row = sparse.lil_matrix((1,3562)) followed by sparse.vstack(M, row) gives *** NotImplementedError: adding a scalar to a CSC or CSR matrix is not supported
and before you ask M is definitely a lil matrix!
@tdc: that's sparse.vstack([M, row]).
genius, thanks. I've been shaving yaks all afternooon with this one!!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.