'Merge two numpy arrays
I am trying to merge two arrays with the same number of arguments.
Input:
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]]
My expected output:
final = [[650001.88, 300442.2, 18.73, 0.575, 650002.094, 300441.668, 18.775, 1],
[650001.96, 300443.4, 18.7, 0.65, 650002.571, 300443.182, 18.745, 2],
[650002.95, 300442.54, 18.82, 0.473, 650003.056, 300442.085, 18.745, 3]]
To do that I create simple loop:
for i in first:
for j in second:
final += np.append(j, i)
I got i filling that i missing something. First of all my loop i extremely slow. Secondly my data is quite have i got more than 2 mlns rows to loop. So I tried to find faster way for example with this code:
final = [np.append(i, second[0]) for i in first]
It working far more faster than previous loop but its appending only first value of second array. Can you help me?
Solution 1:[1]
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()
Solution 2:[2]
Multiply a 5x3 matrix by a 3x2 matrix (real matrix product)
import numpy as np
np_1= np.arange(15).reshape(5,3)
np_1
Solution 3:[3]
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.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Vincent Taing |
| Solution 3 |
