CyprUS - 1 year ago 74

Python Question

How do I use numpy / python array routines to do this ?

E.g. If I have array

`[ [1,2,3,4,]]`

`[[1,1,2,2,],`

[1,1,2,2,],

[3,3,4,4,],

[3,3,4,4]]

Thus, the output is array of double the row and column dimensions. And each element from original array is repeated three times.

What I have so far is this

`def operation(mat,step=2):`

result = np.array(mat,copy=True)

result[::2,::2] = mat

return result

This gives me array

`[[ 98.+0.j 0.+0.j 40.+0.j 0.+0.j]`

[ 0.+0.j 0.+0.j 0.+0.j 0.+0.j]

[ 29.+0.j 0.+0.j 54.+0.j 0.+0.j]

[ 0.+0.j 0.+0.j 0.+0.j 0.+0.j]]

for the input

`[[98 40]`

[29 54]]

The array will always be of even dimensions.

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

Use `np.repeat()`

:

```
In [9]: A = np.array([[1, 2, 3, 4]])
In [10]: np.repeat(np.repeat(A, 2).reshape(2, 4), 2, 0)
Out[10]:
array([[1, 1, 2, 2],
[1, 1, 2, 2],
[3, 3, 4, 4],
[3, 3, 4, 4]])
```

*Explanation:*

First off you can repeat the arrya items:

```
In [30]: np.repeat(A, 3)
Out[30]: array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4])
```

then all you need is reshaping the result (based on your expected result this can be different):

```
In [32]: np.repeat(A, 3).reshape(2, 3*2)
array([[1, 1, 1, 2, 2, 2],
[3, 3, 3, 4, 4, 4]])
```

And now you should repeat the result along the the first axis:

```
In [34]: np.repeat(np.repeat(A, 3).reshape(2, 3*2), 3, 0)
Out[34]:
array([[1, 1, 1, 2, 2, 2],
[1, 1, 1, 2, 2, 2],
[1, 1, 1, 2, 2, 2],
[3, 3, 3, 4, 4, 4],
[3, 3, 3, 4, 4, 4],
[3, 3, 3, 4, 4, 4]])
```

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**