I have two numpy 1d arrays, e.g:
a = np.array([1,2,3,4,5]) b = np.array([6,7,8,9,10])
Then how can I get one 2d array [[1,6], [2,7], [3,8], [4,9], [5, 10]]
?
The numpy. column_stack() function is another method that can be used to zip two 1D arrays into a single 2D array in Python.
Conclusion: to copy data from a numpy array to another use one of the built-in numpy functions numpy. array(src) or numpy. copyto(dst, src) wherever possible.
If you have numpy arrays you can use dstack()
:
import numpy as np a = np.array([1,2,3,4,5]) b = np.array([6,7,8,9,10]) c = np.dstack((a,b)) #or d = np.column_stack((a,b)) >>> c array([[[ 1, 6], [ 2, 7], [ 3, 8], [ 4, 9], [ 5, 10]]]) >>> d array([[ 1, 6], [ 2, 7], [ 3, 8], [ 4, 9], [ 5, 10]]) >>> c.shape (1, 5, 2) >>> d.shape (5, 2)
The answer lies in your question:
np.array(list(zip(a,b)))
Edit:
Although my post gives the answer as requested by the OP, the conversion to list and back to NumPy array takes some overhead (noticeable for large arrays).
Hence, dstack
would be a computationally efficient alternative (ref. @zipa's answer). I was unaware of dstack
at the time of posting this answer so credits to @zipa for introducing it to this post.
Edit 2:
As can be seen in the duplicate question, np.c_
is even shorter than np.dstack
.
>>> import numpy as np >>> a = np.arange(1, 6) >>> b = np.arange(6, 11) >>> >>> a array([1, 2, 3, 4, 5]) >>> b array([ 6, 7, 8, 9, 10]) >>> np.c_[a, b] array([[ 1, 6], [ 2, 7], [ 3, 8], [ 4, 9], [ 5, 10]])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With