Создание гистограммы Python без Pylab

Мне нужно создать список случайных чисел с гауссовым дистрибутивом (я могу это сделать), а затем взять эти числа и построить их на гистограмме. Моя проблема в том, что я должен делать это, не используя встроенную функцию гистограммы в pylab (или любой другой пакет, если на то пошло), и я полностью потеряю. Я смотрю онлайн, и я не нашел ничего, что объясняет, как я буду заниматься этим, кто-нибудь из вас знает, что я могу сделать? Заранее спасибо.

2 Solutions collect form web for “Создание гистограммы Python без Pylab”

Предположим, у вас есть массив numpy который представляет ваши случайные числа

  rnd_numb=array([ 0.48942231, 0.48536864, 0.48614467, ..., 0.47264172, 0.48309697, 0.48439782]) 

Чтобы создать гистограмму, вам нужно всего лишь заполнить ваши данные. Итак, давайте создадим массив, который определяет биннинг

  bin_array=linspace(0,1,100) 

В этом случае мы создаем 100 линейно разнесенных бункеров в диапазоне от 0 до 1

Теперь, чтобы создать гистограмму, вы можете просто сделать

  my_histogram=[] for i in range(len(bin_array)-1): mask = (rnd_numb>=bin_array[i])&(rnd_numb<bin_array[i+1]) my_histogram.append(len(rnd_numb[mask])) 

Это создает список, содержащий подсчеты в каждом бине. Наконец, если вы хотите визуализировать свою гистограмму, вы можете сделать

  plot ((bin_array[1:]+bin_array[:-1])/2.,my_histrogram) 

вы также можете попробовать step или bar .

Быстрый способ вычисления гистограммы состоит в том, чтобы одновременно просматривать список по одному элементу, сортировать, в каком бине он должен быть, а затем подсчитывать количество записей в каждом бине.

 hist_vals = np.zeros(nbins) for d in data: bin_number = int(nbins * ((d - min_val) / (max_val - min_val))) hist_vals[bin_number] += 1 

Обратите внимание, что это O (len (data)) с небольшим предварительным коэффициентом.

Более разумный способ написать это – векторизация хэш-функции:

 bin_number = (nbins * ((data - min_val) / (max_val - min_val))).astype(np.int) 

и используйте заклинание магии для суммирования:

 hist_vals[bin_number] += 1 # numpy slicing magic 

Если вас беспокоит скорость, вы можете использовать функции numpy, которые по существу делают это, но ставят петли на уровне c:

 bin_nums = np.digitize(data, bins) - 1 hist_vals = np.bincount(bin_nums) 
Interesting Posts

глубокое обучение – ряд наивных вопросов о кофе

Argmax каждой строки или столбца в scipy разреженной матрице

Как бы вы наследовали и переопределяли классы модели django для создания listOfStringsField?

Программа Python на Perfect Squares

Почему в Python не сообщалось об ошибках многопроцессорности и о том, как включать ошибки отчетности?

как найти слова, которые составлены из письма, точно сталкиваются друг с другом? (python)

Создать хороший вывод столбца в python

Ошибка при запуске 'pip install -r requirements.txt –upgrade'

Автоматическая загрузка модуля при запуске python

Как определить, использует ли тензорный поток ускорение gpu изнутри оболочки python?

Python extract wav из видеофайла

Формат усеченного Python float как int в строке

Сохранение и обновление списков в словарях Python: почему это происходит?

Список списков групп Python для групп на основе перекрывающихся элементов

изменение размера skimage дает странный результат

Python - лучший язык программирования в мире.