NumPy 배열에서 0 계산
때로는 배열 내부의 요소를 계산해야합니다. 계산할 때 때때로 조건을 연결하고 해당 조건을 충족하는 요소를 계산합니다. 보다 큼 조건,보다 작음 조건, 같음 조건 등이 될 수 있습니다.
이 기사에서는 NumPy 배열에서 0을 효율적으로 계산하는 방법을 배웁니다.
NumPy는 다차원 NumPy 배열과 행렬에 적용 할 수있는 모든 종류의 방법을 제공합니다. 또한 0을 세는 데 사용할 수있는 몇 가지 기능이 있습니다.
이 기사에서는count_nonzero()
및where()
라는 두 가지 메소드에 대해 설명합니다.
count_nonzero()
를 사용하여 NumPy 배열에서 0 계산
이름에서 알 수 있듯이이 메서드는 0이 아닌 요소를 계산합니다. 이 함수를 사용하여 0을 계산합니다.
count_nonzero()
는 정수 값 또는 정수 값 배열을 반환합니다.
count_nonzero()
의 구문은 다음과 같습니다.
count_nonzero(a, axis, keepdims)
다음과 같은 매개 변수가 있습니다.
a
- 함수가 0을 세는 배열axis
- 선택적 매개 변수이며 0이 아닌 요소가 계수되는 축 또는 축의 튜플을 나타냅니다. 이 매개 변수의 기본값은None
이며, 이는 계산이 평면화 된 배열에서 수행됨을 의미합니다.keepdims
- 선택적 부울 매개 변수입니다. 기본적으로False
입니다.True
로 설정하면 계산 된 축이 크기 1의 치수로 결과에 남습니다.
이제이 방법을 사용하여 0을 세어 봅시다. 첫 번째 방법은 다음 코드 스 니펫을 참조하십시오.
import numpy as np
myArray = np.array([1, 2, 0, 3, 4, 0, 5, 6, 0])
myMatrix = np.array([[0, 0, 1, 1], [0, 1, 0, 1], [1, 0, 1, 0], [1, 1, 0, 0]])
print(myArray)
print(myMatrix)
print(f"Number of Non-Zeroes in Array --> {np.count_nonzero(myArray)}")
print(f"Number of Non-Zeroes in Matrix --> {np.count_nonzero(myMatrix)}")
print(f"Number of Zeroes in Array --> {myArray.size - np.count_nonzero(myArray)}")
print(f"Number of Zeroes in Matrix --> {myMatrix.size - np.count_nonzero(myMatrix)}")
출력:
[1 2 0 3 4 0 5 6 0]
[[0 0 1 1]
[0 1 0 1]
[1 0 1 0]
[1 1 0 0]]
Number of Non-Zeroes in Array --> 6
Number of Non-Zeroes in Matrix --> 8
Number of Zeroes in Array --> 3
Number of Zeroes in Matrix --> 8
위의 코드 스 니펫에서 우리가 한 것은 0이 아닌 요소의 수를 세고 배열이나 행렬의 전체 크기에서 0이 아닌 요소의 수를 빼는 것뿐입니다.
이 솔루션은이 기능을 가장 잘 사용하지 못할 수도 있지만 다음과 같습니다.
import numpy as np
myArray = np.array([1, 2, 0, 3, 4, 0, 5, 6, 0])
myMatrix = np.array([[0, 0, 1, 1], [0, 1, 0, 1], [1, 0, 1, 0], [1, 1, 0, 0]])
print(myArray)
print(myMatrix)
print(myArray == 0)
print(myMatrix == 0)
print(f"Number of Zeroes in Array --> {np.count_nonzero(myArray == 0)}")
print(f"Number of Zeroes in Matrix --> {np.count_nonzero(myMatrix == 0)}")
출력:
[1 2 0 3 4 0 5 6 0]
[[0 0 1 1]
[0 1 0 1]
[1 0 1 0]
[1 1 0 0]]
[False False True False False True False False True]
[[ True True False False]
[ True False True False]
[False True False True]
[False False True True]]
Number of Zeroes in Array --> 3
Number of Zeroes in Matrix --> 8
이 솔루션의 핵심은 컴퓨터 과학에서False
인 모든 항목을0
으로 표시 할 수 있고True
를 0이 아닌 값으로 표시 할 수 있다는 원칙입니다.
myArray == 0
문은 속성을 충족하는 모든 요소가 True
이고 그렇지 않은 요소가 False
인 배열을 반환합니다. 그리고 조건 자체는 요소가 0인지 여부를 확인합니다. 따라서 모든 0 요소가 True
로 바뀌고 이제 세어야합니다. 이를 위해count_nonzero()
메소드를 사용합니다.
여기는 함수의 공식 문서에 대한 링크입니다.
where()
를 사용하여 NumPy 배열에서 0 개수 계산
where()
함수 지정된 조건에 따라 배열에서 요소를 필터링하고 필터링 된 배열을 반환합니다. 필터링 된 요소의 인덱스를 반환합니다. 이 함수를 사용하여 0 만있는 배열을 구성하고이 새 배열의 길이는 0의 개수를 제공합니다.
이제 해결책을 봅시다.
import numpy as np
myArray = np.array([1, 2, 0, 3, 4, 0, 5, 6, 0])
myMatrix = np.array([[0, 0, 1, 1], [0, 1, 0, 1], [1, 0, 1, 0], [1, 1, 0, 0]])
print(myArray)
print(myMatrix)
print(myArray[np.where(myArray == 0)])
print(myMatrix[np.where(myMatrix == 0)])
print(f"Number of Zeroes in Array --> {myArray[np.where(myArray == 0)].size}")
print(f"Number of Zeroes in Matrix --> {myMatrix[np.where(myMatrix == 0)].size}")
출력:
[1 2 0 3 4 0 5 6 0]
[[0 0 1 1]
[0 1 0 1]
[1 0 1 0]
[1 1 0 0]]
[0 0 0]
[0 0 0 0 0 0 0 0]
Number of Zeroes in Array --> 3
Number of Zeroes in Matrix --> 8
위의 코드 스 니펫에서 0 인 모든 요소를 필터링했습니다. where()
함수는 해당 요소의 색인을 반환했습니다. 또한 이러한 인덱스를 사용하여 원래 요소를 얻었습니다. 분명히 그들은 모두 0이 될 것입니다. 마지막으로, 우리는 그 0의 수를 세고 그 수를 인쇄했습니다.