В общем, вы можете объединить целую последовательность массивов по любой оси:
numpy.concatenate( LIST, axis=0 )
но вы действительно должны беспокоиться о форме и размерность каждого массива в списке (для 2-мерного выхода 3х5, вам необходимо убедиться , что все они являются 2-мерные массивы п-по-5 уже). Если вы хотите объединить одномерные массивы как строки двухмерного вывода, вам необходимо расширить их размерность.
Как указывает ответ Хорхе, есть также функция stack
, представленная в numpy 1.10:
numpy.stack( LIST, axis=0 )
При этом используется дополнительный подход: создается новое представление каждого входного массива и добавляется дополнительное измерение (в данном случае слева, поэтому каждый n
-элементный 1D-массив становится 1- n
мерным массивом) перед объединением. Это будет работать, только если все входные массивы имеют одинаковую форму - даже вдоль оси конкатенации.
vstack
(или что то же самое row_stack
) часто является более простым в использовании решением, потому что оно будет принимать последовательность 1- и / или 2-мерных массивов и автоматически расширять размерность там, где это необходимо, и только там, где это необходимо, прежде чем объединять весь список вместе. Если требуется новое измерение, оно добавляется слева. Опять же, вы можете объединить сразу весь список без необходимости повторять:
numpy.vstack( LIST )
Такое гибкое поведение также демонстрируется синтаксическим сокращением numpy.r_[ array1, ...., arrayN ]
(обратите внимание на квадратные скобки). Это хорошо для объединения нескольких массивов с явно указанными именами, но не подходит для вашей ситуации, потому что этот синтаксис не будет принимать последовательность массивов, таких как ваш LIST
.
Существует также аналогичная функция column_stack
и ярлык c_[...]
для горизонтального (по столбцам) наложения, а также почти аналогичная функция - hstack
хотя по какой-то причине последняя менее гибкая (более строгая в отношении размерности входных массивов и пытается объединить 1-мерные массивы сквозные, а не как столбцы).
Наконец, в конкретном случае вертикального наложения одномерных массивов также работает следующее:
numpy.array( LIST )
... потому что массивы могут быть построены из последовательности других массивов, добавляя новое измерение в начало.
LIST = [[array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5],[1,2,3,4,5])]
это неправильный синтаксис Python. Просьба уточнить.