What is the equivalent of "zip()" in Python's numpy?

arrays, numpy, python

Solution

You can just transpose it...

>>> a = np.array([(0.1, 1.), (0.1, 2.), (0.1, 3.), (0.1, 4.), (0.1, 5.)])
>>> a
array([[ 0.1,  1. ],
       [ 0.1,  2. ],
       [ 0.1,  3. ],
       [ 0.1,  4. ],
       [ 0.1,  5. ]])
>>> a.T
array([[ 0.1,  0.1,  0.1,  0.1,  0.1],
       [ 1. ,  2. ,  3. ,  4. ,  5. ]])

Problem

I am trying to do the following but with numpy arrays: ``` x = [(0.1, 1.), (0.1, 2.), (0.1, 3.), (0.1, 4.), (0.1, 5.)] normal_result = zip(*x) ``` This should give a result of: ``` normal_result = [(0.1, 0.1, 0.1, 0.1, 0.1), (1., 2., 3., 4., 5.)] ``` But if the input vector is a numpy array: ``` y = np.array(x) numpy_result = zip(*y) print type(numpy_result) ``` It (expectedly) returns a: ``` <type 'list'> ``` The issue is that I will need to transform the result back into a numpy array after this. What I would like to know is what is if there is an efficient numpy function that will avoid these back-and-forth transformations?

Original source