# python - zeros - write 2d array to csv java

## How to make a copy of a 2D array in Python? (4)

This question already has an answer here:

- Copying nested lists in Python 2 answers
- How to clone or copy a list? 18 answers

`X`

is a 2D array. I want to have a new variable `Y`

that which has the same value as the array `X`

. Moreover, **any further manipulations with Y should not influence the value of the X.**

It seems to me so natural to use `y = x`

. But it does not work with arrays. If I do it this way and then changes y, the x will be changed too. I found out that the problem can be solved like that: `y = x[:]`

But it does not work with 2D array. For example:

```
x = [[1,2],[3,4]]
y = x[:]
y[0][0]= 1000
print x
```

returns `[ [1000, 2], [3, 4] ]`

. It also does not help if I replace `y=x[:]`

by `y = x[:][:]`

.

Does anybody know what is a proper and simple way to do it?

For 2D arrays it's possible use **map** function:

```
old_array = [[2, 3], [4, 5]]
# python2.*
new_array = map(list, old_array)
# python3.*
new_array = list(map(list, old_array))
```

I think np.tile also might be useful

```
>>> a = np.array([0, 1, 2])
>>> np.tile(a, 2)
array([0, 1, 2, 0, 1, 2])
>>> np.tile(a, (2, 2))
array([[0, 1, 2, 0, 1, 2],
[0, 1, 2, 0, 1, 2]])
>>> np.tile(a, (2, 1, 2))
array([[[0, 1, 2, 0, 1, 2]],
[[0, 1, 2, 0, 1, 2]]])
```

Using deepcopy() or copy() is a good solution. For a simple 2D-array case

```
y = [row[:] for row in x]
```