# [Numpy-discussion] Selected and altering a submatrix

Steve Lianoglou lists.steve at arachnedesign.net
Mon Jan 29 23:29:24 EST 2007

```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

```