[Numpy-discussion] azip

Alan G Isaac alan.isaac at gmail.com
Thu Jul 18 12:57:19 EDT 2013

I'm floating this thought even though it is not fleshed out.

On occasion, I run into the following problem:
I have a rectangular array A to which I want to append
a (probably) one dimensional vector b to make [A|b].
Of course this can be done as np.hstack((x,b[:,None]))
(or obscurely np.r_['1,2,0',x,b]), but this has the following issues:

- what if ``b`` turns out to be a list?
- what if ``b`` turns out to be 2d (e.g., a column vector)?
- it's a bit ugly
- it is not obvious when read by others (e.g., students)

(The last is a key motivation for me to talk about this.)

All of which leads me to wonder if there might be profit
in a numpy.azip function that takes as arguments
- a tuple of arraylike iterables
- an axis along which to concatenate (say, like r_ does) iterated items

To make that a little clearer (but not to provide a suggested implementation),
it might behave something like

def azip(alst, axis=1):
     results = []
     for tpl in zip(*alst):
     return np.rollaxis(np.array(results), axis-1)

Alan Isaac

More information about the NumPy-Discussion mailing list