|   | 1 |  initial version  | 
The stack method of matrices provides a workaround.
If a and b are matrices with the same number of columns,
a.stack(b) produces a matrix with the rows of a stacked
on top of the rows of b.
sage: a = identity_matrix(3)
sage: b = matrix([[3, 3, 3]])
sage: a[:2].stack(b).stack(a[2:])
[1 0 0]
[0 1 0]
[3 3 3]
[0 0 1]
This works over any ring.
sage: aa = a.change_ring(GF(5))
sage: bb = b.change_ring(GF(5))
sage: aa[:2].stack(bb).stack(aa[2:])
[1 0 0]
[0 1 0]
[3 3 3]
[0 0 1]
|   | 2 |  No.2 Revision  | 
The stack method and augment methods of matrices provides provide a workaround.
If a and b are matrices with the have same number of columns,
columns, a.stack(b) produces a is
a stacked
a stacked on top of ba with extra rows from bIf a and c have same number of rows, a.augment(c) is
b.a augmented to the right by ca with extra columns from cFor adding rows, one can use  thestack method.
sage: a = identity_matrix(3)
sage: b = matrix([[3, 3, 3]])
sage: a[:2].stack(b).stack(a[2:])
a[:2, :].stack(b).stack(a[2:, :])
[1 0 0]
[0 1 0]
[3 3 3]
[0 0 1]
This works over any ring.
sage: aa = a.change_ring(GF(5))
sage: bb = b.change_ring(GF(5))
sage: aa[:2].stack(bb).stack(aa[2:])
aa[:, :2].stack(bb).stack(aa[:, 2:])
[1 0 0]
[0 1 0]
[3 3 3]
[0 0 1]
For adding columns, one can similarly use the augment method.
sage: a = identity_matrix(3)
sage: c = matrix([[3], [3], [3]])
sage: a[:, :2].augment(c).augment(a[:, 2:])
[1 0 3 0]
[0 1 3 0]
[0 0 3 1]
This also works over any ring.
sage: aa = a.change_ring(GF(5))
sage: cc = c.change_ring(GF(5))
sage: aa[:, :2].augment(cc).augment(aa[:, 2:])
[1 0 3 0]
[0 1 3 0]
[0 0 3 1]
 Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.
 
                
                Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.