[Numpy-discussion] Taking a large number of dot products at once

Sturla Molden sturla at molden.no
Fri Mar 4 09:19:46 EST 2011


Den 04.03.2011 14:55, skrev Sturla Molden:
> or just to write more Pythonic code. We don't need to write FORTRAN in 
> Python, computers are fast.
>

Don't be afraid of Python containers and for-loops. They are not nearly 
as evil as Matlab's for loops used to be. Also operations like appending 
tend to be O(1) in Python, but often O(N) in Matlab. In Python we don't 
need to preallocate space for a list or stack, and manually hoist it out 
of the loop.

Replacing Python lists, sets, dicts, tuples, etc. with NumPy ndarrays or 
record arrays, and pretending to use FORTRAN or Matlab, can be silly. 
Try it before you conclude it's slow and write twice the amount of code 
you need to. Those coming to NumPy from Matlab might not be aware of 
this. It's never wise to write Matlab in Python, we have Matlab for 
that. Nor is it wise to write Python in Matlab -- the Pythonic style is 
generally the one recommended against when using Matlab. Speed 
considerations are very different.

Another realated sillyness I've seen is using NumPy record arrays to 
avoid Python dicts. A record array is nice if we need to memory map a 
file with an underlying C struct,  and parse structured binary data. But 
using it to avoid Python dicts is dumb -- all Python objects have a 
__dict__ anyway. I think it's the Matlab way of solving problems that 
make some NumPy users think like this. We are programming Python, not 
Matlab.

Sorry for the rant.

Sturla











-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20110304/13894d58/attachment.html>


More information about the NumPy-Discussion mailing list