# How to copy an array (matrix) in python ?

Examples of how to copy an array in python:

### Copy an array with the numpy copy() function

To copy an array in python, a simple solution is to use the numpy function called copy(), example:

```` >>> import numpy as np`
` >>> x = np.array([1, 2, 3, 4])`
` >>> y = np.copy(x)`
` >>> y = 7`
` >>> y`
` array([1, 7, 3, 4])`
` >>> x`
` array([1, 2, 3, 4])`
```

This function will work for most of the cases except if the array is composed of iterable elements, such as a list for example:

````>>> x = np.array([{'a':[1,2,3]}])`
`>>> y = np.copy(x)`
`>>> y`
`array([{'a': [1, 2, 3]}], dtype=object)`
`>>> y['a'].append(4)`
`>>> y`
`array([{'a': [1, 2, 3, 4]}], dtype=object)`
`>>> x`
`array([{'a': [1, 2, 3, 4]}], dtype=object)`
```

Note here that if the y array is modified, the x array will be as well (the function copy() is called a shallow copy).

### Copy an array with deepcopy

Another solution that will return an independent copy is to use the deepcopy() function, example:

````>>> import copy`
`>>> x = np.array([{'a':[1,2,3]}])`
`>>> y = copy.deepcopy(x)`
`>>> y`
`array([{'a': [1, 2, 3]}], dtype=object)`
`>>> y['a'].append(4)`
`>>> y`
`array([{'a': [1, 2, 3, 4]}], dtype=object)`
`>>> x`
`array([{'a': [1, 2, 3]}], dtype=object)`
```

Here y array has been modified but not the original array x.

### Copy an array using the = operator

WARNING: to copy an array to not use the = operator, since the two arrays will be linked (if one array if modified the other will be too), example:

````>>> import numpy as np`
`>>> x = np.array([1, 2, 3, 4])`
`>>> y = x`
`>>> y`
`array([1, 2, 3, 4])`
`>>> y = 7`
`>>> y`
`array([1, 7, 3, 4])`
`>>> x`
`array([1, 7, 3, 4])`
```

Here y is not really a copy of x, it is more like having two names for a same array.