如何在 NumPy 中横向组合 3 个向量?

How can I combine 3 vectors sideways in NumPy?

我有 3 个数组 [x1,y1,z1], [x2,y2,z2], [x3,y3,z3] 我如何得到 [[x1,x2,x3], [y1,y2, y3], [z1,z2,z3]]?

我能做到:

result = np.array([[a1[0],a2[0],a3[0]], [a1[1],a2[1],a3[1]], [a1[2],a2[3],a3[3]]]

有没有更好的方法?

In [32]: x,y,z = [1,2,3],[11,12,13],[21,21,23]                                  
In [33]: np.array([x,y,z])                                                      
Out[33]: 
array([[ 1,  2,  3],
       [11, 12, 13],
       [21, 21, 23]])

转置:

In [34]: np.array([x,y,z]).T                                                    
Out[34]: 
array([[ 1, 11, 21],
       [ 2, 12, 21],
       [ 3, 13, 23]])

stack 的作用类似于 np.array 但让我们指定一个轴:

In [35]: np.stack([x,y,z],axis=1)                                               
Out[35]: 
array([[ 1, 11, 21],
       [ 2, 12, 21],
       [ 3, 13, 23]])

对于纯列表解决方案:

In [36]: list(zip(x,y,z))                                                       
Out[36]: [(1, 11, 21), (2, 12, 21), (3, 13, 23)]

stacking 的另一种变体:

In [37]: np.column_stack((x,y,z))                                               
Out[37]: 
array([[ 1, 11, 21],
       [ 2, 12, 21],
       [ 3, 13, 23]])