[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