Raj Raj - 2 months ago 16
Python Question

combining 2D arrays to 3D arrays

Hello I have 3 numpy arrays as given below.

>>> print A
[[ 1. 0. 0.]
[ 3. 0. 0.]
[ 5. 2. 0.]
[ 2. 0. 0.]
[ 1. 2. 1.]]
>>> print B
[[ 5. 9. 9.]
[ 37. 8. 9.]
[ 49. 8. 3.]
[ 3. 3. 1.]
[ 4. 4. 5.]]
>>>
>>> print C
[[ 0. 0. 0.]
[ 0. 6. 0.]
[ 1. 4. 6.]
[ 6. 2. 0.]
[ 0. 5. 4.]]


I would like to combine them as

[[[ 1. 0. 0.]
[ 5. 9. 9.]
[ 0. 0. 0.]]

[[ 3. 0. 0.]
[ 37. 8. 9.]
[ 0. 6. 0.]]

[[ 5. 2. 0.]
[ 49. 8. 3.]
[ 1. 4. 6.]]

[[ 2. 0. 0.]
[ 3. 3. 1.]
[ 6. 2. 0.]]

[[ 1. 2. 1.]
[ 4. 4. 5.]
[ 0. 5. 4.]]]


That is I would like to take one row from each array.
Could anyone tell me a simple way to do it?
I already tried
hstack
,
vstack
. But they are not giving the desired result.

Thanks !

Answer

A solution using numpy dstack:

>>> import numpy as np
>>> np.dstack((a,b,c)).swapaxes(1,2)
array([[[ 1,  0,  0],
        [ 5,  9,  9],
        [ 0,  0,  0]],

       [[ 3,  0,  0],
        [37,  8,  9],
        [ 0,  6,  0]],

       [[ 5,  2,  0],
        [49,  8,  3],
        [ 1,  4,  6]],

       [[ 2,  0,  0],
        [ 3,  3,  1],
        [ 6,  2,  0]],

       [[ 1,  2,  1],
        [ 4,  4,  5],
        [ 0,  5,  4]]])
Comments