[NumPy-Tickets] [NumPy] #402: newaxis incompatible with array indexing

NumPy Trac numpy-tickets@scipy....
Wed Mar 23 13:34:52 CDT 2011

```#402: newaxis incompatible with array indexing
---------------------------+------------------------------------------------
Reporter:  NeilenMarais  |       Owner:  somebody
Type:  enhancement   |      Status:  closed
Priority:  normal        |   Milestone:  Unscheduled
Component:  numpy.core    |     Version:
Resolution:  wontfix       |    Keywords:
---------------------------+------------------------------------------------

Comment(by mwiebe):

Perhaps a better way to phrase what I mean is to remove the current
interface to fancy indexing. It requires extra thought, and easily trips
people up, as evidenced by a number of mailing list questions.

{{{
In [25]: a = np.arange(12).reshape(4,3)

In [26]: a[[0,2,3]]
Out[26]:
array([[ 0,  1,  2],
[ 6,  7,  8],
[ 9, 10, 11]])

# So lists in index 0 select rows

In [27]: a[:,[2,1,2]]
Out[27]:
array([[ 2,  1,  2],
[ 5,  4,  5],
[ 8,  7,  8],
[11, 10, 11]])

# Cool, lists in index 1 select columns, let's put that together...

In [28]: a[[0,2,3],[2,1,2]]
Out[28]: array([ 2,  7, 11])

# What happened? Totally unexpected, especially since the following works:

In [31]: a[0:2,1:3]
Out[31]:
array([[1, 2],
[4, 5]])

# So when someone thinks "now let's replace the slice with a list because
# I need rows/columns that aren't in a linear sequence," the behavior will
# be confusing.

}}}

I would suggest the take function should be generalized to do multi-
indexing as a replacement for the current fancy indexing.

--
Ticket URL: <http://projects.scipy.org/numpy/ticket/402#comment:10>
NumPy <http://projects.scipy.org/numpy>
My example project
```