1

Kind of new to python and I need to use numpy to append a column, I have an ndarray a with [[1 2 3] [4 5 6]] and another ndarray with b [1 7] so the end result should be [[1 2 3 1] [4 5 6 7] . I have tried

array = np.append(a , b, axis=1) 

but I get

all the input arrays must have same number of dimensions

(makes sense). I was also trying to insert it in a for loop but based on what i have seen with python these libraries have an easy way to do things and I was wondering if there is a more efficient way?

1 Answer 1

1

Try numpy.hstack with added axis to b -

a = np.array([[1,2,3],[4,5,6]])
b = np.array([1,7])

np.hstack([a,b[:,None]])
array([[1, 2, 3, 1],
       [4, 5, 6, 7]])

Notes:

  1. b[:,None] adds an axis to turn b from 1D (2,) to 2D (2,1) array (its the same as b.reshape(-1,1))
  2. np.hstack is now able to horizontally stack (2,3) and (2,1) to give (2,4) shaped array
Sign up to request clarification or add additional context in comments.

3 Comments

Ah I see thank you, and the resulting is another ndarray ? . and does it work with any array size and dimension? (for a forexample, b will always be 1D)
Depends. for np.hstack, you will need the first dimension to be common. as long as the number of rows in a and the number of elements in b are equal .. yes.
Do mark the answer if he solved your question :) It encourages me to help you again in the future!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.