NumPy 배열에서 0 계산

Vaibhav Vaibhav 2023년1월30일
  1. count_nonzero()를 사용하여 NumPy 배열에서 0 계산
  2. where()를 사용하여 NumPy 배열에서 0 개수 계산
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의 수를 세고 그 수를 인쇄했습니다.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.