# [Numpy-discussion] Selected and altering a submatrix

Sebastian Haase seb.haase at gmx.net
Mon Jan 29 22:44:40 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
>
```