이 글에서는 두 개의 NumPy 배열 사이의 집합 차이(set difference)를 구하는 방법을 다룹니다. 집합 차이란 첫 번째 배열에는 존재하지만 두 번째 배열에는 없는 고유한 값들을 의미합니다. 이를 위해 NumPy 라이브러리에서 제공하는 setdiff1d() 함수를 사용합니다.
setdiff1d() 함수는 array1과 array2 두 개의 인자를 받으며, array2에는 포함되지 않은 array1의 값들만 정렬된 형태로 반환합니다.
집합 차이의 개념
수학적으로 집합 차이는 A − B로 표현되며, A에는 속하지만 B에는 속하지 않는 원소들의 집합입니다. 예를 들어 A = {2, 4, 6}이고 B = {4}라면, A − B = {2, 6}이 됩니다.
알고리즘
1단계: numpy 라이브러리를 임포트한다.
2단계: 비교할 두 개의 NumPy 배열을 정의한다.
3단계: setdiff1d() 함수를 사용해 두 배열 간의 집합 차이를 계산한다.
4단계: 결과를 출력한다.
예제 코드
import numpy as np
array_1 = np.array([2, 4, 6, 8, 10, 12])
print("Array 1:\n", array_1)
array_2 = np.array([4, 8, 12])
print("\nArray 2:\n", array_2)
set_diff = np.setdiff1d(array_1, array_2)
print("\nThe set difference between array_1 and array_2 is:\n", set_diff)
실행 결과
Array 1:
[ 2 4 6 8 10 12]
Array 2:
[ 4 8 12]
The set difference between array_1 and array_2 is:
[ 2 6 10]
코드 설명
위 코드에서 array_1에는 [2, 4, 6, 8, 10, 12]가 들어 있고, array_2에는 [4, 8, 12]가 들어 있습니다. 두 배열을 비교했을 때 array_2에 없는 array_1의 요소는 2, 6, 10입니다. 따라서 최종 출력 결과인 [2 6 10]이 바로 두 배열의 집합 차이입니다.
참고로 setdiff1d() 함수는 결과값을 항상 오름차순으로 정렬하고 중복된 값을 제거하여 반환하기 때문에, 순서나 중복 여부와 상관없이 일관된 결과를 얻을 수 있다는 장점이 있습니다.