# [Numpy-discussion] On responding to dubious ideas (was: Re: Advanced indexing: "fancy" vs. orthogonal)

Derek Homeier derek at astro.physik.uni-goettingen.de
Fri Apr 10 12:58:56 EDT 2015

```On 10 Apr 2015, at 06:22 pm, Alan G Isaac <alan.isaac at gmail.com> wrote:

>>
>> On Thu, Apr 9, 2015 at 8:41 PM, Derek Homeier <derek at astro.physik.uni-goettingen.de <mailto:derek at astro.physik.uni-goettingen.de>> wrote:
>>    a[1:3,1:3]?
>>    Can’t be generalised to arbitrary selections of rows,columns, though (e.g. a[1::2,::2] still works…)
>
>
>
> On 4/9/2015 11:26 PM, Alexander Belopolsky wrote:
>> I am interested in the arbitrary selection of rows and columns given by indices or by boolean selectors.
>
>
>
> You mean like this?
> import numpy as np
> a = np.arange(20).reshape((4,5))
> rows = [0,3]
> cols = [1,2,4]
> print a[rows][:,cols]

This creates a copy, same apparently with np.ix_ - an objection I had cut from the original post…
Compare to
b = a[::2,1::2]
b *= 2
print(a)

On 10 Apr 2015, at 02:23 am, Alexander Belopolsky <ndarray at mac.com> wrote:

> I could do
>
> >>> a[[1,2]][:,[1,2]]
> array([[22, 23],
>        [32, 33]])
>
> but this creates an extra copy.
>
> The best solution I can think of involves something like
>
> >>> i = np.array([[1,2]])
> >>> a.flat[i + len(a)*i.T]
> array([[22, 23],
>        [32, 33]])
>
> which is hardly elegant or obvious.
>

```