NumPy 마스크 2d 배열

Salman Mehmood 2024년2월15일
  1. Python에서 NumPy로 마스크 또는 2d 부울 배열 만들기
  2. Python 논리 연산자로 마스크 만들기
  3. NumPy 논리 함수로 마스크 만들기
NumPy 마스크 2d 배열

마스크 또는 부울 배열이 무엇인지에 대한 설명과 함께 배우러 갑니다. 또한 논리 P1ython 연산자와 Python의 NumPy 논리 함수를 사용하여 2d 마스크를 만드는 방법도 배웁니다.

Python에서 NumPy로 마스크 또는 2d 부울 배열 만들기

일부 조건을 적용하는 일부 배열로 시작한 다음 마스크 또는 부울 배열을 생성합니다. 예를 들어, 아래에 표시된 정수 배열만 생각하고 5보다 작은 이 조건을 적용합니다.

결과 부울 배열은 입력 배열과 모양이 동일하며 조건의 요소별 적용일 뿐입니다. 이 경우 8은 5보다 작으므로 false, 2는 5보다 작음, 즉 true, 1은 5보다 작음 true 등입니다.

때때로 그것은 0-1로 마스크를 나타내고 거짓은 0을 나타내고 1은 참을 나타냅니다.

부울 배열 마스크

Python 논리 연산자로 마스크 만들기

numpy를 가져와서 코드로 이동하고 numpy 배열을 사용하여 Python 2d 목록으로 채워지는 My_2DArray라는 변수를 만듭니다.

import numpy as np

My_2DArray = np.array([[-12, -31, 5], [7, 0, -9]])
print(My_2DArray)

출력:

[[-12 -31   5]
 [  7   0  -9]]

마스크를 시연하는 예를 들어 보겠습니다. % 연산자를 사용하여 My_2DArray를 7로 나눌 수 있는 값을 사용하는 zero_mod_array라는 새 변수를 만듭니다.

7로 나눈 나머지가 0인 배열의 모든 요소를 선택합니다.

암호:

import numpy as np

My_2DArray = np.array([[-12, -31, 5], [7, 0, -9]])

zero_mod_array = 0 == (My_2DArray % 7)
print(zero_mod_array)

실행 후 부울 값의 배열이 생성되었음을 확인합니다. 배열의 첫 번째 요소인 -12를 보면 7로 나누어지지 않고 다음 요소도 그렇지 않지만 두 번째 목록의 첫 번째 요소는 7로 나누어지는 7이고 두 번째 요소는 0입니다. 역시 7로 나뉩니다.

따라서 모든 요소는 7로 나눌 수 없기 때문에 다른 요소를 제외하고 두 요소 모두 True입니다. 이것이 위치에 False 값을 얻은 이유입니다.

출력:

[[False False False]
 [ True True False]]

다음 예에서는 Sun_array라는 변수를 만들고 있으며 이는 부울 마스크 배열의 필수 요소입니다. My_2DArray를 가져와 zero_mod_array에서 생성한 결과로 인덱싱합니다.

암호:

import numpy as np

My_2DArray = np.array([[-12, -31, 5], [7, 0, -9]])

zero_mod_array = 0 == (My_2DArray % 7)

Sun_array = My_2DArray[zero_mod_array]
print(Sun_array)

출력:

[7 0]

Sun_array를 마스크 배열로 사용하여 자체 색인을 만들고 Sun_array 내에서 0보다 큰 요소를 선택하고 양의 요소만 포함하는 새 배열을 만듭니다.

Sun_array[Sun_array > 0]

Sun_array에서 하나의 요소만 7 array([7])보다 큽니다. Sun_array를 검사하면 값이 변경되지 않은 것을 볼 수 있습니다. 여전히 배열([7, 0])입니다.

NumPy 논리 함수로 마스크 만들기

동일한 작업을 수행하는 다른 방법을 살펴보겠습니다. 특정 방식으로 NumPy 논리 연산자를 사용합니다.

먼저 위에서 했던 것처럼 나머지 연산자의 결과를 할당할 mod_test라는 변수를 만듭니다.

유사한 작업을 수행하고 positive_test라는 또 다른 변수를 만들고 이번에는 My_2DArray가 0보다 큰 값을 할당합니다. 즉, My_2DArray의 모든 요소에 조건을 적용한 후 부울 값을 나타냅니다. .

combined_test라는 또 다른 변수를 만들고 logical_and() 함수를 사용하며 mod_testpositive_test를 인수로 사용합니다.

암호:

import numpy as np

My_2DArray = np.array([[-12, -31, 5], [7, 0, -9]])

mod_test = 0 == (My_2DArray % 7)
positive_test = My_2DArray > 0
combined_test = np.logical_and(mod_test, positive_test)
print(combined_test)

실행 후 완벽한 부울 값이 표시되며 배열에 해당하는 값이 하나만 포함됩니다.

출력:

[[False False False]
 [ True False False]]

combined_test를 사용하여 원래 배열을 인덱싱하고 위에서 얻은 것과 동일한 값을 얻을 수 있습니다.

암호:

import numpy as np

My_2DArray = np.array([[-12, -31, 5], [7, 0, -9]])

mod_test = 0 == (My_2DArray % 7)
positive_test = My_2DArray > 0
combined_test = np.logical_and(mod_test, positive_test)
print(My_2DArray[combined_test])

출력:

[7]

이것은 동일한 결과를 얻기 위해 두 가지 기술을 사용하여 NumPy 2d 배열을 마스크하는 방법입니다.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn