달나라 노트

Python numpy : copy (array 복사본 생성하기) 본문

Python/Python numpy

Python numpy : copy (array 복사본 생성하기)

CosmosProject 2021. 12. 29. 00:52
728x90
반응형

 

 

 

 

 

 

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_testarr_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_testarr_test_2에 할당할 때 copy method를 이용해서 할당하면

array의 복사본을 arr_test_2에 할당하므로 arr_testarr_test_2는 서로 독립적인 array를 가지고 있게 됩니다.

 

따라서 arr_test_2에 값 변화가 있어도 arr_test에는 값의 변화가 없죠.

 

 

 

 

 

 

728x90
반응형
Comments