Взагалі, ви можете об'єднати цілу послідовність масивів уздовж будь-якої осі:
numpy.concatenate( LIST, axis=0 )
але ви дійсно повинні турбуватися про форму і розмірність кожного масиву в списку (для 2-мірного виходу 3х5, вам необхідно переконатися , що всі вони є 2-мірні масиви п-по-5 вже). Якщо ви хочете об’єднати одновимірні масиви як рядки двовимірного виводу, вам потрібно розширити їх розмірність.
Як вказує відповідь Хорхе, існує також функція stack
, введена в numpy 1.10:
numpy.stack( LIST, axis=0 )
Для цього застосовується додатковий підхід: він створює новий вигляд кожного вхідного масиву і додає додатковий вимір (у цьому випадку ліворуч, тому кожен n
1-елементний масив стає 1-на- n
2D масивом) перед об'єднанням. Це буде працювати лише в тому випадку, якщо всі вхідні масиви мають однакову форму - навіть вздовж осі об'єднання.
vstack
(або еквівалентно row_stack
) часто є більш простим у використанні рішенням, оскільки воно буде приймати послідовність 1- та / або двовимірних масивів і автоматично розширювати розмірність там, де це необхідно і лише там, де це необхідно, перш ніж об’єднати весь список разом. Там, де потрібен новий вимір, він додається зліва. Знову ж таки, ви можете об’єднати цілий список відразу, не потребуючи ітерації:
numpy.vstack( LIST )
Цю гнучку поведінку демонструє також синтаксичний ярлик numpy.r_[ array1, ...., arrayN ]
(зверніть увагу на квадратні дужки). Це добре для об'єднання декількох явно названих масивів, але не годиться для вашої ситуації, оскільки цей синтаксис не прийме послідовності масивів, як ваш LIST
.
Існує також аналогічна функція column_stack
та ярлик c_[...]
для горизонтального (по стовпцях) укладання, а також майже -аналогічна функція hstack
- хоча остання з якихось причин менш гнучка (вона суворіша щодо розмірності вхідних масивів і намагається об'єднати 1-D масиви наскрізні, замість того, щоб розглядати їх як стовпці).
Нарешті, у конкретному випадку вертикального укладання одновимірних масивів також працює наступне:
numpy.array( LIST )
... тому що масиви можуть бути побудовані з послідовності інших масивів, додаючи новий вимір на початок.
LIST = [[array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5],[1,2,3,4,5])]
це неправильний синтаксис python. Поясніть будь ласка.