1. b = a

a = np.array([1, 2, 3, 4])
b = a

이렇게 단순히 대입연산자로 b에 a를 대입하는 경우는 복사가 아니다.

a라는 변수에 할당한 array의 모든 데이터와 속성을 공유한다

Untitled

b.shape = (2, 2)를 수행하면 a의 shape도 (2, 2)로 변경된다.

<aside> 💡 이 경우 b is a 의 반환값은 True

</aside>

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

array의 데이터만 공유할 뿐 dimension등의 다른 속성들은 공유하지 않는다

a = np.array([[1, 2], [3, 4]])
b = a.view()

무슨 의미냐면,

이를 수행하면 b.shape = (1, 4)를 수행해도 a의 dimension은 그대로이다

그러나

b[0] = 15 를 수행하면 a[0]도 15로 바뀐다.

<aside> 💡 이 경우 b is a는 False이지만 b.base is a 는 True이다.

</aside>

3. deep copy

전혀 다른 메모리 공간에 값이 같은 배열을 복사한다.

a = np.array([[1, 2], [3, 4]])
b = a.copy()

a나 b의 값을 변화시켜도 서로 영향을 주지 않는다. 완전히 독립적이다.