Поскольку ArrayFlatten
был введен в Mathematica 6, наименее запутываемое решение должно быть
matrix = {{1, 2}, {2, 3}}
vector = {{4}, {5}}
ArrayFlatten@{{vector, matrix}}
Хороший трюк заключается в том, что замена любого блока матрицы на 0
дает вам нулевой блок нужного размера.
Я думаю, что наименее непонятным является следующий способ сделать это:
PrependColumn[vector_List, matrix_List] := MapThread[Prepend, {matrix, vector}];
В общем, MapThread
- это функция, которую вы будете использовать чаще всего для таких задач (я использую все время, когда добавляются метки к массивам перед их правильным форматированием с помощью Grid
), и это может сделать вещи намного более ясными и краткими, если использовать Prepend
вместо эквивалентного Prepend [ №1, №2] и
.
Я считаю, что наиболее распространенный способ - это транспонировать, добавлять и снова транспонировать:
PrependColumn[vector_List, matrix_List] :=
Transpose[Prepend[Transpose[matrix], vector]]