Reputation: 5023
I feel like there is some documentation I am missing, but I can't find anything on this specific example - everything is just about concatenating or stacking arrays.
I have array x and array y both of shape (2,3)
x = [[1,2,3],[4,5,6]]
y = [[7,8,9],[10,11,12]]
x = 1 2 3
4 5 6
y = 7 8 9
10 11 12
I want array z with shape (2,3,2) that looks like this
z = [[[1,7],[2,8],[3,9]],[[4,10],[5,11],[6,12]]]
z = [1,7] [2,8] [3,9]
[4 10] [5 11] [6 12]
basically joins the x and y element at each position.
Upvotes: 1
Views: 2745
Reputation: 12142
If you have two-dimensional matrices, you can use numpy.dstack():
z = np.dstack((x, y))
Upvotes: 3
Reputation: 113994
In [39]: z = np.concatenate((x[...,None], y[...,None]), axis=2)
In [40]: z
Out[40]:
array([[[ 1, 7],
[ 2, 8],
[ 3, 9]],
[[ 4, 10],
[ 5, 11],
[ 6, 12]]])
Upvotes: 1
Reputation: 1394
Sounds like the function you're looking for is stack()
, using it to stack along the 3rd dimension.
import numpy as np
x = np.asarray([[1,2,3],[4,5,6]])
y = np.asarray([[7,8,9],[10,11,12]])
z = np.stack((x, y), 2)
Upvotes: 4