[Numpy-discussion] Selected and altering a submatrix

Sebastian Haase haase at msg.ucsf.edu
Mon Jan 29 22:45:20 CST 2007


How about
mat[0:3, 4:7] += 1


-Sebastian

On 1/29/07, Steve Lianoglou <lists.steve at arachnedesign.net> wrote:
> > Hi,
> >
> > I was just curious what the "correct" (fast) way to select and alter
> > a submatrix.
> >
> > For example, say I have a 10x10 array and only want to add some
> > number to the elements in the submatrix that consists of the [0,1,2]
> > th rows, and [4,5,6]th colums.
> >
> > You can imagine that those rows/cols select a square in the top-
> > middle of the 10x10 which I want to alter.
> >
> > The only way I can get this to work is if I iterate over the indices
> > in one of the dimensions (say the rows) and use the column indices to
> > slice out the relevant elements to add to .. is there a NumPy-thonic
> > way to do this:
> >
> > ===
> > import numpy as N
> > mat = N.zeros((10,10))
> > rows = [0,1,2]
> > cols = [4,5,6]
> >
> > for row in rows:
> >    mat[row,cols] += 1
> >
> > ====
> >
> > I found something on the lists from a few years back that was in
> > reference to numeric or numarray that suggested doing some gymnastics
> > with take/put, but it still seemed as if there was no way to slice
> > out this view of a matrix w/o making a copy.
> >
> > Thanks,
> > -steve
> > _______________________________________________
> > Numpy-discussion mailing list
> > Numpy-discussion at scipy.org
> > http://projects.scipy.org/mailman/listinfo/numpy-discussion
> >
>


More information about the Numpy-discussion mailing list