Pertanyaan Bagaimana cara kerja numpy.histogram ()?


Saat membaca di atas numpy, saya menemukan fungsinya numpy.histogram().

Apa itu untuk dan bagaimana cara kerjanya? Dalam dokumen yang mereka sebutkan tempat sampah: Apakah mereka?

Beberapa googling menuntun saya ke definisi Histogram secara umum. Saya mengerti itu. Tapi sayangnya saya tidak bisa menghubungkan pengetahuan ini dengan contoh yang diberikan dalam dokumen.


95
2018-02-04 14:56


asal


Jawaban:


Bin adalah rentang yang mewakili lebar satu batang histogram sepanjang sumbu X. Anda juga bisa menyebutnya interval ini. (Wikipedia mendefinisikan mereka lebih formal sebagai "kategori menguraikan".)

The Numpy histogram fungsi tidak menggambar histogram, tetapi menghitung kejadian input data yang jatuh di dalam setiap bin, yang pada gilirannya menentukan area (tidak harus tinggi jika sampah tidak sama lebarnya) dari masing-masing bar.

Dalam contoh ini:

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

Ada 3 tempat sampah, untuk nilai mulai dari 0 hingga 1 (excl 1.), 1 hingga 2 (excl. 2) dan 2 hingga 3 (termasuk. 3), masing-masing. Cara Numpy mendefinisikan tempat sampah ini jika dengan memberikan daftar pembatas ([0, 1, 2, 3]) dalam contoh ini, meskipun juga mengembalikan sampah dalam hasil, karena dapat memilihnya secara otomatis dari input, jika tidak ada yang ditentukan. Jika bins=5, misalnya, akan menggunakan 5 tempat sampah dengan lebar yang sama menyebar antara nilai input minimum dan nilai input maksimum.

Nilai input adalah 1, 2 dan 1. Oleh karena itu, bin "1 hingga 2" berisi dua kejadian (keduanya 1 nilai), dan bin "2 hingga 3" berisi satu kemunculan ( 2). Hasil ini berada di item pertama dalam tuple yang dikembalikan: array([0, 2, 1]).

Karena tempat sampah di sini memiliki lebar yang sama, Anda dapat menggunakan jumlah kemunculan untuk ketinggian setiap batang. Ketika ditarik, Anda akan memiliki:

  • sebuah bar dengan tinggi 0 untuk range / bin [0,1] pada sumbu X,
  • setinggi 2 untuk rentang / bin [1,2],
  • sebuah bar tinggi 1 untuk rentang / bin [2,3].

Anda dapat merencanakan ini langsung dengan Matplotlib (nya hist fungsi juga mengembalikan tempat sampah dan nilai-nilai):

>>> 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


128
2018-02-04 15:09



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

Di bawah, hist menunjukkan bahwa ada 0 item dalam bin # 0, 2 dalam bin # 1, 4 dalam bin # 3, 1 dalam bin # 4.

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

bin_edges menunjukkan bahwa bin # 0 adalah interval [0,1), bin # 1 adalah [1,2), ..., bin # 3 adalah [3,4).

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

Mainkan dengan kode di atas, ubah masukan menjadi np.histogram dan lihat cara kerjanya.


Tetapi sebuah gambar bernilai seribu kata:

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


57
2018-02-04 15:23



Hal lain yang berguna untuk dilakukan numpy.histogram adalah memplot output sebagai koordinat x dan y pada linegraph. Sebagai contoh:

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

Ini bisa menjadi cara yang berguna untuk memvisualisasikan histogram di mana Anda ingin tingkat perincian yang lebih tinggi tanpa bilah di mana-mana. Sangat berguna dalam histogram gambar untuk mengidentifikasi nilai piksel ekstrim.


1
2017-12-28 21:33