스택큐힙리스트

NumPy 배열들을 원소별로 비교하여 동등성 검사 본문

카테고리 없음

NumPy 배열들을 원소별로 비교하여 동등성 검사

스택큐힙리스트 2023. 4. 3. 03:02
반응형

두 NumPy 배열을 동등하게 비교하는 가장 간단한 방법은 무엇인가요 (동등성이 정의된 대로 A = B이면 모든 인덱스 i에 대해 #$ *! ^ @! $$ &)?

단지 ==를 사용하면 부울 배열이 반환됩니다.

>>> numpy.array([1,1,1]) == numpy.array([1,1,1])

array([ True, True, True], dtype=bool)

이 배열의 요소를 and 하여 배열이 같은지 여부를 판정해야할까요? 아니면 더 간단한 방법이 있을까요?

답변 1

(A==B).all()

배열의 모든 값이 참인지 테스트하십시오. (A == B)

참고: 당신은 아마도 A.shape == B.shape처럼 A와 B 모양도 테스트하고 싶을 수도 있습니다.

특수한 경우와 대안들 (dbaupp의 대답과 yoavram의 댓글에서)

그것은 주목해야 할 점입니다.

이 솔루션은 특정한 경우에 이상한 동작을 할 수 있습니다. 만약 A 또는 B 중 하나가 비어 있고, 나머지 하나에 하나의 요소만 들어있다면, True 를 반환합니다. 어떤 이유에서인지, #A==B 비교는 빈 배열을 반환하며, #all 연산자는 True 를 반환합니다.

또 다른 위험은 A와 B가 동일한 모양이 아니고 브로드캐스트가 불가능하면이 방법은 오류를 발생시킬 수 있다는 것입니다.

결론적으로, 만약 A와 B 모양에 대한 의심이 있거나 그냥 안전하게 하려면 전문 기능 중 하나를 사용하세요.

np.array_equal(A,B) # test if same shape, same elements values

np.array_equiv(A,B) # test if broadcastable shape, same elements values

np.allclose(A,B,...) # test if same shape, elements have close enough values

답변 2

두 개의 NumPy 배열을 요소별로 동등성을 비교하는 방법

NumPy는 파이썬에서 과학 계산을 위한 핵심 라이브러리 중 하나입니다. NumPy 배열은 파이썬의 기본 배열보다 강력한 기능과 성능을 제공합니다. 때문에 NumPy 배열을 비교할 일이 많이 생길 수 있습니다. NumPy 배열은 요소 단위로 비교 가능합니다. 따라서 두 개의 NumPy 배열이 요소별로 동등한지 비교하는 방법에 대해서 알아보겠습니다.

NumPy 배열의 동등성을 비교하는 경우, 일반적으로 == 연산자를 사용합니다. 이 연산자는 두 개의 배열 요소가 동일한 경우 True를 반환합니다. 따라서 두 배열의 요소가 모두 같은 경우 동등한 것으로 판단할 수 있습니다.

예를 들어, 다음과 같은 두 개의 NumPy 배열이 있다고 가정해보겠습니다.

```python

import numpy as np

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

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

```

이 경우, 두 배열을 비교하면 다음과 같은 결과를 얻을 수 있습니다.

```python

print(a == b)

# 출력: [True True True]

```

위의 결과에서 볼 수 있듯이, 두 배열 모두 요소가 동일하므로 True를 반환합니다.

그러나, 배열의 형태가 다른 경우에는 요소 단위로 비교할 수 없습니다. 따라서 배열 형태가 같은지 확인한 후, 요소를 비교해야 합니다.

예를 들어, 다음과 같은 두 개의 NumPy 배열이 있다고 가정해보겠습니다.

```python

import numpy as np

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

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

```

이 경우, 두 배열을 비교하면 다음과 같은 결과를 얻을 수 있습니다.

```python

print(a == b)

# 출력: [[ True True True]

# [False False False]]

```

위의 결과에서 볼 수 있듯이, 두 배열의 형태가 다르기 때문에 요소 단위로 비교할 수 없습니다. 따라서 두 배열의 형태가 같지 않다는 결과가 반환됩니다.

따라서, NumPy 배열의 동등성을 요소 단위로 비교하는 방법은 간단합니다. 일반적으로 == 연산자를 사용하면 됩니다. 그러나, 배열의 형태가 같은지 확인한 후 요소를 비교해야 합니다.

반응형
Comments