Search

numpy array의 복사

1. b = a

a = np.array([1, 2, 3, 4]) b = a
Python
복사
이렇게 단순히 대입연산자로 b에 a를 대입하는 경우는 복사가 아니다.
a라는 변수에 할당한 array의 모든 데이터와 속성을 공유한다
b.shape = (2, 2)를 수행하면 a의 shape도 (2, 2)로 변경된다.
이 경우 b is a 의 반환값은 True

2. view를 이용한 copy(shallow copy)

array의 데이터만 공유할 뿐 dimension등의 다른 속성들은 공유하지 않는다
a = np.array([[1, 2], [3, 4]]) b = a.view()
Python
복사
무슨 의미냐면,
이를 수행하면 b.shape = (1, 4)를 수행해도 a의 dimension은 그대로이다
그러나
b[0] = 15 를 수행하면 a[0]도 15로 바뀐다.
이 경우 b is a는 False이지만 b.base is a 는 True이다.

3. deep copy

전혀 다른 메모리 공간에 값이 같은 배열을 복사한다.
a = np.array([[1, 2], [3, 4]]) b = a.copy()
Python
복사
a나 b의 값을 변화시켜도 서로 영향을 주지 않는다. 완전히 독립적이다.