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[1] = 7>>> yarray([1, 7, 3, 4])>>> xarray([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)>>> yarray([{'a': [1, 2, 3]}], dtype=object)>>> y[0]['a'].append(4)>>> yarray([{'a': [1, 2, 3, 4]}], dtype=object)>>> xarray([{'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)>>> yarray([{'a': [1, 2, 3]}], dtype=object)>>> y[0]['a'].append(4)>>> yarray([{'a': [1, 2, 3, 4]}], dtype=object)>>> xarray([{'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>>> yarray([1, 2, 3, 4])>>> y[1] = 7>>> yarray([1, 7, 3, 4])>>> xarray([1, 7, 3, 4])
Here y is not really a copy of x, it is more like having two names for a same array.
References
| Links | Site |
|---|---|
| copy | scipy doc |
| Numpy matrix modified through a copy | stackoverflow |
