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:
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= 1000 print x
[ [1000, 2], [3, 4] ]. It also does not help if I replace
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]]])
from copy import copy, deepcopy y = deepcopy(x)
I'm not sure, maybe
copy() is sufficient.
Using deepcopy() or copy() is a good solution. For a simple 2D-array case
y = [row[:] for row in x]