Как я могу объединить 3 вектора в NumPy? - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть 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]]]

Есть ли лучший способ?

1 Ответ

0 голосов
/ 27 февраля 2019
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]])

transpose:

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]])
...