[Numpy-discussion] dot function or dot notation, matrices, arrays?
Dag Sverre Seljebotn
dagss@student.matnat.uio...
Sat Dec 19 13:52:17 CST 2009
Christopher Barker wrote:
> Wayne Watson wrote:
>
>> Yes, flat sounds useful here. However, numpy isn't bending over
>> backwards to tie in conventional mathematical language into it.
>>
>
> exactly -- it isn't bending over at all! (well a little -- see below).
> numpy was designed for general purpose computational needs, not any one
> branch of math. nd-arrays are very useful for lots of things. In
> contrast, Matlab, for instance, was originally designed to be an easy
> front-end to linear algebra package. Personally, when I used Matlab, I
> found that very awkward -- I was usually writing 100s of lines of code
> that had nothing to do with linear algebra, for every few lines that
> actually did matrix math. So I much prefer numpy's way -- the linear
> algebra lines of code are longer an more awkward, but the rest is much
> better.
>
> The Matrix class is the exception to this: is was written to provide a
> natural way to express linear algebra. However, things get a bit tricky
> when you mix matrices and arrays, and even when sticking with matrices
> there are confusions and limitations -- how do you express a row vs a
> column vector? what do you get when you iterate over a matrix? etc.
>
> There has been a bunch of discussion about these issues, a lot of good
> ideas, a little bit of consensus about how to improve it, but no one
> with the skill to do it has enough motivation to do it.
>
I recently got motivated to get better linear algebra for Python; and
startet submitting and writing on patches for Sage instead (which of
course uses NumPy underneath). Sage has a strong concept of matrices and
vectors, but not much numerical support, mainly exact or multi-precision
arithmetic. So perhaps there will be more progress there; I'm not sure
yet how far it will get or if anybody will join me in doing it...
To me that seems like the ideal way to split up code -- let NumPy/SciPy
deal with the array-oriented world and Sage the closer-to-mathematics
notation.
I never liked the NumPy matrix class. I think this is mainly because my
matrices are often, but not always, diagonal, which doesn't fit at all
into NumPy's way of thinking about these things. (Also a 2D or 3D array
could easily be a "vector", like if you want to linearily transform the
values of the pixels in an image. So I think any Python linear algebra
package has to attack things in a totally different way from numpy.matrix).
Dag Sverre
More information about the NumPy-Discussion
mailing list