BigBoy1337
BigBoy1337

Reputation: 5023

How to merge 2 numpy arrays?

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

Answers (3)

Darius
Darius

Reputation: 12142

If you have two-dimensional matrices, you can use numpy.dstack():

z = np.dstack((x, y))

Upvotes: 3

John1024
John1024

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

user20160
user20160

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

Related Questions