programing

어떻게 멍해요?히스토그램: 작업?

javajsp 2023. 7. 28. 21:48

어떻게 멍해요?히스토그램: 작업?

나는 numpy를 읽다가 그 기능을 접했습니다.

무엇을 위한 이며 어떻게 작동합니까?문서에 빈이 언급되어 있습니다.그것들은 무엇입니까?

구글 검색을 통해 일반적으로 히스토그램의 정의를 알게 되었습니다.난 그걸 이해해.하지만 안타깝게도 저는 이 지식을 문서에 제시된 예들과 연결시킬 수 없습니다.

빈은 X축을 따라 히스토그램의 단일 막대 너비를 나타내는 범위입니다.이를 간격이라고도 할 수 있습니다. (위키백과에서는 더 공식적으로 "분리 범주"로 정의합니다.)

더 눔피histogram함수는 히스토그램을 그리지 않지만 각 빈 내에 있는 입력 데이터의 발생을 계산하며, 이는 각 막대의 면적(빈이 동일한 폭이 아닌 경우 높이)을 결정합니다.

이 예제에서는 다음을 수행합니다.

 np.histogram([1, 2, 1], bins=[0, 1, 2, 3])

각각 0에서 1(1 제외), 1에서 2(2 제외) 및 2에서 3(3 포함) 범위의 값에 대해 3개의 빈이 있습니다.Numpy가 구분자 목록을 제공하여 이러한 빈을 정의하는 방법:[0, 1, 2, 3]이 예에서는 빈이 지정되지 않은 경우 입력에서 빈을 자동으로 선택할 수 있으므로 결과에서도 빈을 반환합니다.bins=5예를 들어, 최소 입력 값과 최대 입력 값 사이에 동일한 너비의 빈 5개를 사용합니다.

입력 값은 1, 2 및 1입니다.따라서 bin "1 ~ 2"에는 두 개의 발생이 포함됩니다(두 개의 발생).1값) 및 bin "2 ~ 3"은 하나의 발생을 포함합니다.2) 다음 결과는 반환된 튜플의 첫 번째 항목에 있습니다.array([0, 2, 1]).

여기서 빈은 너비가 같기 때문에 각 막대의 높이에 발생 횟수를 사용할 수 있습니다.그림을 그릴 때 다음과 같은 이점이 있습니다.

  • X축의 범위/빈 [0,1]에 대한 높이가 0인 막대
  • 범위/빈에 대한 높이 2의 막대 [1,2],
  • 범위/빈에 대한 높이 1의 막대 [2,3].

Matplotlib을 사용하여 직접 그림을 그릴 수 있습니다.hist함수는 또한 빈과 값을 반환합니다.):

>>> import matplotlib.pyplot as plt
>>> plt.hist([1, 2, 1], bins=[0, 1, 2, 3])
(array([0, 2, 1]), array([0, 1, 2, 3]), <a list of 3 Patch objects>)
>>> plt.show()

enter image description here

import numpy as np    
hist, bin_edges = np.histogram([1, 1, 2, 2, 2, 2, 3], bins = range(5))

아래,hist0번 빈에 항목이 0개, 1번 빈에 항목이 2개, 3번 빈에 항목이 4개, 4번 빈에 항목이 1개 있음을 나타냅니다.

print(hist)
# array([0, 2, 4, 1])   

bin_edges는 bin #0이 간격 [0,1], bin #1이 [1,2], ..., bin #3이 [3,4]임을 나타냅니다.

print (bin_edges)
# array([0, 1, 2, 3, 4]))  

위의 코드를 사용하여 입력을 변경합니다.np.histogram어떻게 작동하는지 확인합니다.


하지만 사진 한 장이 천 마디의 가치가 있습니다.

import matplotlib.pyplot as plt
plt.bar(bin_edges[:-1], hist, width = 1)
plt.xlim(min(bin_edges), max(bin_edges))
plt.show()   

enter image description here

또 다른 유용한 일은numpy.histogram출력을 선 그래프에 x 및 y 좌표로 표시하는 것입니다.예:

arr = np.random.randint(1, 51, 500)
y, x = np.histogram(arr, bins=np.arange(51))
fig, ax = plt.subplots()
ax.plot(x[:-1], y)
fig.show()

enter image description here

이렇게 하면 막대 없이 보다 높은 수준의 세분화를 원하는 히스토그램을 시각화하는 데 유용한 방법이 될 수 있습니다.영상 히스토그램에서 극단 픽셀 값을 식별하는 데 매우 유용합니다.

언급URL : https://stackoverflow.com/questions/9141732/how-does-numpy-histogram-work