On Sun, Aug 15, 2010 at 4:27 PM, Sturla Molden <stu...@molden.no> wrote: > >> Matlab also takes a copy if we create an array slice. It means for example >> that a wavelet transform written in Python will be O(n) with respect to >> memory, whereas it will be O(n log n) in Matlab. > > Other examples: > > A reshape will create a new array in Matlab. It will create a view in NumPy. > > A transpose will create a new array in Matlab and be O(m*n). A transpose > will just create a view in NumPy (i.e. reverse stride and shape > attributes) and be O(1). > > Matlab does not broadcast. We must explicitely match array shapes using > repmat, which by the way creates a new array.
I agree broadcasting is one of my favorite features of numpy compared to any other array language I know > > NumPy allows arrays to be updated inplace. Matlab always creates a new > copy (Matlab arrays are immutable). inplace operation in matlab: http://blogs.mathworks.com/loren/2007/03/22/in-place-operations-on-data/ not as fancy but improving matlab has JIT compiler also this for some mostly balanced arguments, I think, http://stackoverflow.com/questions/179904/what-is-matlab-good-for-why-is-it-so-used-by-universities-when-is-it-better-tha I don't have very large memory requirements, and I didn't do enough similar things in matlab and python to have experience with these differences. Josef > > > > > > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion