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_test
및 positive_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 배열을 마스크하는 방법입니다.
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