Python에서 두 배열 비교

Muhammad Waiz Khan 2023년1월30일
  1. numpy.array_equal()메소드를 사용하여 Python에서 두 배열 비교
  2. numpy.allclose()메서드를 사용하여 Python에서 두 배열 비교
  3. numpy.array_equiv()메소드를 사용하여 Python에서 두 배열 비교
  4. ==연산자 및numpy.all()메서드를 사용하여 Python에서 두 배열 비교
Python에서 두 배열 비교

이 튜토리얼에서는 Python에서 두 배열을 비교하고 동일한 지 여부를 확인하는 다양한 방법을 살펴 봅니다. 두 배열은 차원과 값이 동일한 경우에만 동일합니다. 두 배열의 값이 같지만 순서가 같지 않으면 배열이 동일한 것으로 간주되지 않습니다.

다음 방법을 사용하여 두 배열이 Python에서 동일한 지 여부를 확인할 수 있습니다.

numpy.array_equal()메소드를 사용하여 Python에서 두 배열 비교

numpy.array_equal(a1, a2, equal_nan=False)는 두 개의 배열a1a2를 입력으로 취하고 두 배열의 모양과 요소가 동일한 경우True를 리턴하고 그렇지 않으면 메소드가False를 리턴합니다. equal_nan=키워드 인수의 기본값은False이며 메소드가 두 개의NaN값을 동일하게 간주하도록하려면True로 설정해야합니다.

아래 예제 코드는numpy.array_equal()메소드를 사용하여 Python에서 두 배열을 비교하는 방법을 보여줍니다.

import numpy as np

a1 = np.array([1, 2, 4, 6, 7])
a2 = np.array([1, 3, 4, 5, 7])
print(np.array_equal(a1, a1))
print(np.array_equal(a1, a2))

출력:

True
False

numpy.allclose()메서드를 사용하여 Python에서 두 배열 비교

numpy.allclose(a1, a2, rtol=1e-05, atol=1e-08, equal_nan=False)메서드는 배열a1a2를 입력으로 취하고의 각 요소가True를 반환합니다. a1a2의 해당 요소와 같거나 그 차이가 공차 값 내에 있습니다.

허용 오차 값은a2,rtolatol인수를 사용하여 계산됩니다.

atol + rtol * absolute(a2)

numpy.allclose()메소드는 최종 배열이 예상 배열과 같은지 여부를 확인하려는 계산에 유용합니다. numpy.allclose()메소드를 사용하여 다음과 같은 방식으로 Python에서 두 배열을 비교할 수 있습니다.

import numpy as np

a1 = np.array([1, 2, 4, 6, 7])
a2 = np.array([1, 3, 4, 5, 7])
a3 = np.array([1, 3, 4.00001, 5, 7])
print(np.allclose(a1, a2))
print(np.allclose(a3, a2))

출력:

False
True

위의 예제 코드에서 볼 수 있듯이 두 값 사이의0.00001차이는 기본적으로 무시됩니다. atolrtol의 값을 변경하여 공차 값을 늘릴 수 있습니다.

numpy.array_equiv()메소드를 사용하여 Python에서 두 배열 비교

numpy.array_equiv(a1, a2)메소드는 배열a1a2를 입력으로 취하고 두 배열의 모양과 요소가 동일하면True를 리턴합니다. 그렇지 않으면False를 반환합니다.

두 배열을numpy.array_equiv()메소드에 전달하여 Python에서 비교할 수 있습니다. 아래 예제 코드는numpy.array_equal()메소드를 사용하여 두 배열이 Python에서 동일한 지 확인하는 방법을 보여줍니다.

import numpy as np

a1 = np.array([1, 2, 4, 6, 7])
a2 = np.array([1, 3, 4, 5, 7])
a3 = np.array([1, 3, 4.00001, 5, 7])
print(np.array_equiv(a1, a2))
print(np.array_equiv(a3, a2))

출력:

False
False

==연산자 및numpy.all()메서드를 사용하여 Python에서 두 배열 비교

==연산자를 배열과 함께 사용하면 두 배열에 해당하는 모양의 배열을 반환합니다. 반환 된 배열은 두 배열의 요소가 해당 인덱스에서 같으면 인덱스에True를 포함하고 그렇지 않으면 배열이됩니다. 해당 색인에False를 포함합니다.

각 요소 대신 두 배열을 비교하고 싶으므로==연산자와 함께numpy.all()메서드를 사용할 수 있습니다. numpy.all()메소드는 주어진 축에있는 모든 입력 배열 요소가True이면True를 반환합니다. 그렇지 않으면False를 반환합니다.

노트
이 메서드는 두 배열이 모두 비어 있거나 한 배열의 길이가1인 경우True를 반환합니다. 또한 두 배열의 모양이 동일하지 않으면 오류가 발생합니다. 그렇기 때문에 위에서 언급 한 방법을 선호해야합니다.

아래 예제 코드는==연산자와numpy.all()메서드를 사용하여 Python에서 두 배열을 비교하는 방법을 보여줍니다.

import numpy as np

a1 = np.array([1, 2, 4, 6, 7])
a2 = np.array([1, 3, 4, 5, 7])
a3 = np.array([1, 3, 4.00001, 5, 7])

print((a1 == a2).all())
print((a3 == a2).all())

출력:

False
False