Python的numpy中的“zip()”是什么?

我正在尝试执行以下操作,但使用numpy数组:

x = [(0.1, 1.), (0.1, 2.), (0.1, 3.), (0.1, 4.), (0.1, 5.)] normal_result = zip(*x) 

这应该给以下结果:

 normal_result = [(0.1, 0.1, 0.1, 0.1, 0.1), (1., 2., 3., 4., 5.)] 

但是,如果input向量是一个numpy数组:

 y = np.array(x) numpy_result = zip(*y) print type(numpy_result) 

它(预计)返回一个:

 <type 'list'> 

问题是我需要在这之后将结果转换回numpy数组。

我想知道的是,如果有一个有效的numpy函数可以避免这些来回转换,那么结果是什么呢?

你可以转置它…

 >>> 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. ]]) >>> aT array([[ 0.1, 0.1, 0.1, 0.1, 0.1], [ 1. , 2. , 3. , 4. , 5. ]]) 

尝试使用dstack :

 >>> from numpy import * >>> a = array([[1,2],[3,4]]) # shapes of a and b can only differ in the 3rd dimension (if present) >>> b = array([[5,6],[7,8]]) >>> dstack((a,b)) # stack arrays along a third axis (depth wise) array([[[1, 5], [2, 6]], [[3, 7], [4, 8]]]) 

所以在你的情况下,这将是:

 x = [(0.1, 1.), (0.1, 2.), (0.1, 3.), (0.1, 4.), (0.1, 5.)] y = np.array(x) np.dstack(y) >>> array([[[ 0.1, 0.1, 0.1, 0.1, 0.1], [ 1. , 2. , 3. , 4. , 5. ]]])