Я пытаюсь преобразовать 3D-список из 2D-списка в Python 3 - PullRequest
0 голосов
/ 21 января 2019

Я не смог найти ничего, что подходит для типа списка, который я пытаюсь преобразовать. 2-й список -

[[2,3,4],[5,6,7],[8,9,10],[11,12,13]]

и мне нужен список типа

[[[2,3,4],[5,6,7]],[[8,9,10],[11,12,13]]]

Я пробовал все это, но это не работает. Я знаю размер списка, который я хочу преобразовать.

a = np.array(item).reshape(3, round(len(item)/2),round(len(item)/2))
a = np.reshape(np.array(item), (round(len(item)/2), round(len(item)/2), 3))
a = np.array(item)[round(len(item)/2), round(len(item)/2), newaxis]

1 Ответ

0 голосов
/ 21 января 2019

Как насчет того, чтобы сначала преобразовать ваш список в массивы и найти нужные фигуры, а затем изменить их соответствующим образом?

In [2]: lol = [[2,3,4],[5,6,7],[8,9,10],[11,12,13]] 
In [3]: lol_arr = np.array(lol)    

In [4]: lol3 = [[[2,3,4],[5,6,7]],[[8,9,10],[11,12,13]]]
In [5]: lol3_arr = np.array(lol3) 

In [6]: lol_arr.shape                  
Out[6]: (4, 3)

In [7]: lol3_arr.shape                             
Out[7]: (2, 2, 3)

# reshape accordingly
In [9]: np.reshape(lol_arr, (2, 2, 3))                                 
Out[9]: 
array([[[ 2,  3,  4],
        [ 5,  6,  7]],

       [[ 8,  9, 10],
        [11, 12, 13]]])

In [10]: np.reshape(lol_arr, (2, 2, 3)).tolist() 
Out[10]: [[[2, 3, 4], [5, 6, 7]], [[8, 9, 10], [11, 12, 13]]]

# or get the array shape directly
In [11]: np.reshape(lol_arr, lol3_arr.shape).tolist() 
Out[11]: [[[2, 3, 4], [5, 6, 7]], [[8, 9, 10], [11, 12, 13]]]
...