- 1차원
'''
얕은 복사(주소값 복사) 및 깊은 복사 (실제값 복사 ) 개념
1. 파이썬
2. numpy
'''
import numpy as np
# 1. 파이썬
# 가. 얕은 복사 ( 주소값 복사 )
# ==> 두개의 변수가 같은 주소를 참조하기 때문에 하나의 변수에서 값을 변경하면 나머지도 영향을 받는다.0
x = [1,2,3]
x2 = x
print(id(x), id(x2)) # 2426196059520 2426196059520
x[0] = 100
print(x, x2) # [100, 2, 3] [100, 2, 3]
# 나. 깊은 복사 ( 실제값 복사) ==> x[:], x.copy(), list(x)
x = [1,2,3]
x2 = x[:] # 많이 사용되는 연산이다. 사용할때마다 매번 새로운 동일한 값들이 생성된다. ==> 메모리 효율이 떨어진다.
x3 = x.copy()
x4 = list(x)
print(id(x), id(x2), id(x3), id(x4)) # 2646889138752 2646889136576 2646888211840 2646889139328
x[0] = 100
print(x, x2, x3, x4) # [100, 2, 3] [1, 2, 3] [1, 2, 3] [1, 2, 3]
# 2. numpy
arr = np.array([1,2,3])
arr2 = arr[:] # numpy는 얕은 복사로 처리됨.
print(id(arr), id(arr2)) # 1575112281328 1575112281520 ==> 주소값은 내부적으로 얕은복사로 처리됨 ( 뷰로 연결 )
arr2[0] = 100
print(arr, arr2) # [100 2 3] [100 2 3]
#numpy 깊은 복사
arr=np.array([1,2,3])
arr2=arr.copy()
arr3=np.copy(arr)
arr[0]=100
print(arr,arr2,arr3)#[100 2 3] [1 2 3]
-2차원
'''
얕은 복사(주소값 복사) 및 깊은 복사 (실제값 복사 ) 개념
1. 파이썬
2. numpy
'''
import numpy as np
#가. 얕은 복사(주소값 복사)
# 1. 파이썬
x=[1,2,3,[4,5,6]] #중첩리스트
x2=x
print(id(x),id(x2))#2044951505600 2044951505600
x[0]=100
x[3][0]=400
print(x,x2)
#나. 깊은 복사
#바깥 쪽 리스트는 깊은 복사되고 중첩된 리스트는 얕은 복사
x=[1,2,3,[4,5,6]]
x2=x[:]
print(id(x),id(x2))#2044951505600 2044951505600
x[0]=100 #깊은 복사
x[3][0]=400 #얕은 복사
print(x,x2)
#바깥 쪽 리스트는 깊은 복사되고 중첩 리스트도 깊은 복사되도록 처리하자
import copy
x=[1,2,3,[4,5,6]]
x2=x[:]# 바깥 쪽 리스트는 깊은 복사 중첩리스트는 얕은 복사
x3=copy.deepcopy(x)# 바깥 쪽 리스트는 깊은 복사되고 중첩리스트도 깊은 복사된다.
x[0]=100
x[3][0]=400
print(x,x2,x3)#[100, 2, 3, [400, 5, 6]] [1, 2, 3, [400, 5, 6]] [1, 2, 3, [4, 5, 6]]
# 2.numpy
arr=np.arange(9).reshape(3,3)
print(arr)
'''
[[0 1 2]
[3 4 5]
[6 7 8]]
'''
arr2=arr[:]
arr[0]=100
print(arr,arr2)
'''
[[100 100 100]
[ 3 4 5]
[ 6 7 8]]
[[100 100 100]
[ 3 4 5]
[ 6 7 8]]
'''
import copy
arr=np.arange(9).reshape(3,3)
arr2=copy.deepcopy(arr)
arr[0]=100
print(arr,arr2)
'''
[[100 100 100]
[ 3 4 5]
[ 6 7 8]]
[[0 1 2]
[3 4 5]
[6 7 8]]
'''
'python' 카테고리의 다른 글
[numpy] numpy 분할 | 열 분할 | 행 분할 (0) | 2022.09.29 |
---|---|
[numpy] numpy 병합 | 열 병합 | 행 병합 (0) | 2022.09.29 |
[numpy] numpy 2차원 색인 | 색인을 이용한 값 변경 (0) | 2022.09.29 |
[numpy] numpy 2차원 색인 | 인덱싱, 슬라이싱, fangy, boolean (0) | 2022.09.29 |
[numpy] numpy 1차원 색인 | 인덱싱, 슬라이싱, fangy, boolean (0) | 2022.09.29 |