Python numpy : copy (array 복사본 생성하기)
import numpy as np
arr_test = np.array([1, 2, 3, 4, 5])
arr_test_2 = arr_test
arr_test_2[1] = 10
print(arr_test)
print(arr_test_2)
위 예시를 봅시다.
arr_test에 [1, 2, 3, 4, 5]를 array로 만들어서 할당했습니다.
그리고 arr_test_2 변수에 arr_test를 그대로 할당하교있죠.
이 시점에서 arr_test == arr_test_2일 것입니다.
arr_test_2[1] = 10
그리고 arr_test_2의 index = 1 값을 10으로 바꿨죠.
그러면 당연히 arr_test_2는 아래와 같이 바뀔겁니다.
[ 1 10 3 4 5]
그러면 이때 arr_test는 [1 2 3 4 5] 일까요?
위 코드의 실행 결과를 봅시다.
import numpy as np
arr_test = np.array([1, 2, 3, 4, 5])
arr_test_2 = arr_test
arr_test_2[1] = 10
print(arr_test)
print(arr_test_2)
-- Result
[ 1 10 3 4 5]
[ 1 10 3 4 5]
마지막의 arr_test, arr_test_2를 각각 print했는데 둘 다 [ 1 10 3 4 5]로 출력됩니다.
왤까요?
그 이유는 array를 다른 변수에 그대로 할당했다고 할지라도 이 둘은 array를 공유합니다.
따라서 arr_test를 arr_test_2에 할당했다고 할지라도 이 둘은 동일한 array를 공유하므로,
arr_test_2의 값에 변화를 주면 arr_test도 값이 변하는겁니다.
이같은 상황을 방지하고, 만약 정말 array를 다른 변수에 할당해서 둘이 독립적으로 다루고싶다면 copy method를 사용하면 됩니다.
import numpy as np
arr_test = np.array([1, 2, 3, 4, 5])
arr_test_2 = arr_test.copy()
arr_test_2[1] = 10
print(arr_test)
print(arr_test_2)
-- Result
[1 2 3 4 5]
[ 1 10 3 4 5]
위처럼 arr_test를 arr_test_2에 할당할 때 copy method를 이용해서 할당하면
array의 복사본을 arr_test_2에 할당하므로 arr_test와 arr_test_2는 서로 독립적인 array를 가지고 있게 됩니다.
따라서 arr_test_2에 값 변화가 있어도 arr_test에는 값의 변화가 없죠.