2015-08-06 1 views
1

Скажем, у меня есть следующий массив:Равель() 3D массив в особом порядке - Python

array([[[ 0, 1, 2], 
     [ 3, 4, 5], 
     [ 6, 7, 8]], 

     [[ 9, 10, 11], 
     [12, 13, 14], 
     [15, 16, 17]], 

     [[18, 19, 20], 
     [21, 22, 23], 
     [24, 25, 26]]]) 

и я использую стандартный ravel() на нем. Вот что я получаю:

array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 
     17, 18, 19, 20, 21, 22, 23, 24, 25, 26]) 

Вместо этого мне нужно распутать в другом порядке, который:

0 9 18 1 10 19 2 11 20 3 12 21 4 13 22 5 14 23 6 15 24 7 16 25 8 17 26 

, к сожалению, даже параметр order в Равель, не помогает, производство:

a.ravel(order='F') 

array([ 0, 9, 18, 3, 12, 21, 6, 15, 24, 1, 10, 19, 4, 13, 22, 7, 16, 
     25, 2, 11, 20, 5, 14, 23, 8, 17, 26]) 

Это заказ Фортрана, который является самым близким, что я нашел к тому, что мне нужно, но все еще не то, что я хочу. Кто-нибудь знает, как получить значения в том порядке, в котором я нуждаюсь?

ответ

3
>>> a.transpose(1, 2, 0).ravel() 
array([ 0, 9, 18, 1, 10, 19, 2, 11, 20, 3, 12, 21, 4, 13, 22, 5, 14, 
     23, 6, 15, 24, 7, 16, 25, 8, 17, 26])