Переупорядочение вложенного списка в Mathematica - PullRequest
1 голос
/ 11 марта 2020

У меня есть список:
list1 = {{{3, 3, 3, 3}, {1, 1, 1, 1}, {2, 2, 2, 2}}, {{3, 3, 3, 3}, {1, 1, 1, 1}, {2, 2, 2, 2}}};
Из приведенного выше списка я хотел бы получить следующий список:
{{{3, 3, 3, 3, 3, 3, 3, 3}, {1, 1, 1, 1, 1, 1, 1, 1}, {2, 2, 2, 2, 2, 2, 2, 2}}}
Я пытался использовать ArrayReshape, но полученный список это не то, что я хотел:
list2 = ArrayReshape[list1, {1, 3, 8}]
{{{3, 3, 3, 3, 1, 1, 1, 1}, {2, 2, 2, 2, 3, 3, 3, 3}, {1, 1, 1, 1, 2, 2, 2, 2}}}
* edit
Желаемое решение должно обобщаться на списки со всеми различными входными данными.
** edit
Пример список для общего случая:
{{{a1,a2,a3},{b1,b2,b3},{c1,c2,c3}},{{d1,d2,d3},{e1,e2,e3},{f1,f2,f3}}}
И желаемый результат:
{{{a1,a2,a3,d1,d2,d3},{b1,b2,b3,e1,e2,e3},{c1,c2,c3,f1,f2,f3}}}

1 Ответ

0 голосов
/ 11 марта 2020

Попробуйте

list1 = {{{3,3,3,3},{1,1,1,1},{2,2,2,2}},{{3,3,3,3},{1,1,1,1},{2,2,2,2}}}; 
f[v_]:=Table[v,{Count[Flatten[list1],v]}]
Map[f,DeleteDuplicates[Flatten[list1]]]

, который мгновенно возвращает

{{3,3,3,3,3,3,3,3},{1,1,1,1,1,1,1,1},{2,2,2,2,2,2,2,2}}

РЕДАКТИРОВАТЬ

Есть ли шанс, что это то, что вы искали?

list1 = {{{1,2,3,4},{5,6,7,8},{9,10,11,12}},
         {{13,14,15,16},{17,18,19,20},{21,22,23,24}}};
MapThread[Join,list1]

, который возвращает

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

Просто угадал

...