tags:

views:

104

answers:

2

hello all, I need to add a column and and a row to an existing numpy array at a position defined as I can. forgiveness for my regular English.

and thanks for any response

+3  A: 

I assume your column and rows are just a list of lists?

That is, you have the following?

L = [[1,2,3],
     [4,5,6]]

To add another row, use the append method of a list.

L.append([7,8,9])

giving

L = [[1,2,3],
     [4,5,6],
     [7,8,9]]

To add another column, you would have to loop over each row. An easy way to do this is with a list comprehension.

L = [x + [0] for x in L]

giving

L = [[1,2,3,0],
     [4,5,6,0]]
Stefan Kendall
and to convert that to array just do array(lst) ?
Hamish Grubijan
That should work. There's probably a better way to do this with numpy, but your original question did not specify such.
Stefan Kendall
thanks for answering
ricardo
+3  A: 

There are many ways to do this in numpy, but not all of them let you add the row/column to the target array at any location (e.g., append only allows addition after the last row/column). If you want a single method/function to append either a row or column at any position in a target array, i would go with 'insert':

T = NP.random.randint(0, 10, 20).reshape(5, 4)
c = NP.random.randint(0, 10, 5)
r = NP.random.randint(0, 10, 4)
# add a column to T, at the front:
NP.insert(T, 0, c, axis=1)
# add a column to T, at the end:
NP.insert(T, 4, c, axis=1)
# add a row to T between the first two rows:
NP.insert(T, 2, r, axis=0)
doug