"Peter Otten" <[EMAIL PROTECTED]> wrote: > George Sakkis wrote: > > > What's the fastest and most elegant equivalent of zip() in > > Numeric/Numarray between two equally sized 1D arrays ? That is, how to > > combine two (N,)-shaped arrays to one (N,2) (or (2,N)) shaped ? I > > expect the fastest and the most elegant idiom to be identical, as it is > > usually the case in this excellent library, but if not, both would be > > useful to know. Thanks, > > >>> import Numeric as nu > >>> a = nu.array(range(3)) > >>> nu.array([a, a]) > array([[0, 1, 2], > [0, 1, 2]]) > >>> nu.transpose(nu.array([a, a])) > array([[0, 0], > [1, 1], > [2, 2]]) > > Or am I missing something? As to speed, it seems to be the fastest to > write...
Though not the fastest to execute; using concatenate instead of initializing an array from a list [a,a] is more than 2,5 time faster in my system (~4.6 vs 11.8 usec per loop according to timeit.py), and it's not harder either. One difference is that the equivalent expression for concatenate expects arrays of shape (1,len(a)) instead of 1D arrays os shape (len(a),): >>> a = reshape(range(5), (1,5)) >>> a array([ [0, 1, 2, 3, 4]]) >>> concatenate((a,a)) array([[0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]) George -- http://mail.python.org/mailman/listinfo/python-list