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











_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to