# [Numpy-discussion] matrix indexing question

Zachary Pincus zpincus@stanford....
Tue Mar 27 12:16:47 CDT 2007

```> Exactly: that was one other thing I found artificial.
> Surely the points will then be wanted as arrays.
>
> So my view is that we still do not have a use case
> for wanting matrices yielded when iterating across
> rows of a matrix.

It's pretty clear from my perspective: 1-D slices of matrices *must*
be matrices. I gave an intuitive make-it-fit-with-known-notation
explanation, and Charles gave a theoretically-grounded explanation.
There was no objection to this from any quarter.

Given that 1-D slices of matrices must be matrices for deep
mathematical reasons as well as notational compatibility with the
rest of linear algebra -- e.g. that m[0] yields a matrix if m is a
matrix-- it almost certainly would violate the principle of least
surprise for iteration over m (intuitively understood to be choosing m
[0] then m[1] and so forth) to yield anything other than a matrix.
This can't possibly be what you're asking for, right? You aren't
suggesting that m[0] and list(iter(m))[0] should be different types?

There are many clear and definite use cases for m[0] being a matrix,
by the way, in addition to the theoretical arguments -- these aren't
hard to come by. Whether or nor there are actual good use-cases for
iterating over a matrix, if you believe that m[0] should be a matrix,
it's madness to suggest that list(iter(m))[0] should be otherwise.

My opinion? Don't iterate over matrices. Use matrices for linear
algebra. There's no "iteration" construct in linear algebra. The
behavior you find so puzzling is a necessary by-product of the
fundamental behavior of the matrix class -- which has been explained
and which you offered no resistance to.

Zach

```