[Numpy-discussion] addressing a submatrix

Karol Langner karol.langner at kn.pl
Wed Jun 14 04:31:38 CDT 2006


On Wednesday 14 June 2006 11:14, Martin Wiechert wrote:
> Hi list,
>
> is there a concise way to address a subrectangle of a 2d array? So far I'm
> using
>
> A [I] [:, J]
>
> which is not pretty and more importantly only works for reading the
> subrectangle. Writing does *not* work. (Cf. session below.)
>
> Any help would be appreciated.
>
> Thanks,
> Martin

You can achieve this by using the "take" function twice, in this fashion:

>>> a = numpay.ones((10,10))
>>> for i in range(5):
...  for j in range(5):
...   a[i][j] = i+j
... 
>>> a
array([[0, 1, 2, 3, 4],
       [1, 2, 3, 4, 5],
       [2, 3, 4, 5, 6],
       [3, 4, 5, 6, 7],
       [4, 5, 6, 7, 8]])
>>> print a.take.__doc__
a.take(indices, axis=None).  Selects the elements in indices from array a 
along the given axis.
>>> a.take((1,2,3),axis=0)
array([[1, 2, 3, 4, 5],
       [2, 3, 4, 5, 6],
       [3, 4, 5, 6, 7]])
>>> a.take((1,2,3),axis=0).take((2,3),axis=1)
array([[3, 4],
       [4, 5],
       [5, 6]])

Cheers,
Karol

-- 
written by Karol Langner
śro cze 14 11:27:33 CEST 2006




More information about the Numpy-discussion mailing list