Merge two numpy arrays

For this case, hstack (because second is already 2D) and c_ (because it concatenates along the second axis) would also work. In fact c_ would work even if second is shape (3,), as long as its length matches the length of first.

Assuming first and second are already numpy array objects:

out = np.c_[first, second]

or

out1 = np.hstack((first, second))

Output:

assert (out == np.array(final)).all() & (out == out1).all()

That being said, all are just different ways of using np.concatenate.


Use np.array and then np.concatenate,

import numpy as np

first = np.array([[650001.88, 300442.2,   18.73,  0.575,  
                   650002.094, 300441.668, 18.775],
                  [650001.96, 300443.4,   18.7,   0.65,   
                   650002.571, 300443.182, 18.745],
                  [650002.95, 300442.54,  18.82,  0.473,  
                   650003.056, 300442.085, 18.745]])

second = np.array([[1],
                   [2],
                   [3]])

np.concatenate((first, second), axis=1)

Where axis=1 means that we want to concatenate horizontally.

That works for me


Use np.column_stack:

import numpy as np

first = [[650001.88, 300442.2,   18.73,  0.575,  650002.094, 300441.668, 18.775],
         [650001.96, 300443.4,   18.7,   0.65,   650002.571, 300443.182, 18.745],
         [650002.95, 300442.54,  18.82,  0.473,  650003.056, 300442.085, 18.745]]

second = [[1],
          [2],
          [3]]

np.column_stack([first, second])

If you need it as a list, use the method tolist:

np.column_stack([first, second]).tolist()