Raj - 11 months ago 70

Python Question

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`

Thanks !

Answer Source

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]]])
```