Numpy, adding a row to a matrix

Robert Kern robert.kern at gmail.com
Mon Jun 9 16:04:32 EDT 2008


sapsi wrote:
> Hello,
> I have a numpy array (2 rows 3 colums)
> 
> import numpy
> a=numpy.array(  [ [1,2,3] , [3,3,1] ])
> 
> I wish to add a row, this is how i do it
> 
> s=a.shape
> numpy.resize(a,s[0]+1,s[1])
> a[s[0]]=new row vector.
> 
> Q: Is this a costly operation?

It can be if you have large arrays.

> What happens if i have to it several
> (and unknown) number of times?
> is there a simpler way to add a row?

numpy.vstack([a, newrow])

Generally speaking, you shouldn't resize numpy arrays. If you need to construct 
an array by appending, build up a list instead and use vstack() (or hstack() or 
dstack() or column_stack() or concatenate() depending on the geometry).

We also have a numpy mailing list, which you should direct future numpy 
questions to:

   http://www.scipy.org/Mailing_Lists

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
  that is made terrible by our own mad attempt to interpret it as though it had
  an underlying truth."
   -- Umberto Eco




More information about the Python-list mailing list