У меня есть список целых чисел и вы хотите получить частоту каждого целого числа. Об этом говорилось здесь
Проблема заключается в том, что подход, который я использую, дает мне частоту плавающих чисел, когда мой набор данных состоит только из целых чисел. Почему это происходит и как я могу получить частоту целых чисел из моих данных?
Я использую pyplot.histogram для построения гистограммы с частотой появления
import numpy as np
import matplotlib.pyplot as plt
from numpy import *
data = loadtxt('data.txt',dtype=int,usecols=(4,)) #loading 5th column of csv file into array named data.
plt.hist(data) #plotting the column as histogram
Я получаю гистограмму, но я заметил, что если я "распечатаю" историю (данные)
hist=np.histogram(data)
print hist(data)
Я получаю это:
(array([ 2323, 16338, 1587, 212, 26, 14, 3, 2, 2, 2]),
array([ 1. , 2.8, 4.6, 6.4, 8.2, 10. , 11.8, 13.6, 15.4,
17.2, 19. ]))
Где второй массив представляет значения, а первый массив представляет число вхождений.
В моем наборе данных все значения являются целыми числами, как происходит, что второй массив имеет плавающие числа и как мне получить частоту целых чисел?
ОБНОВЛЕНИЕ:
Это решает проблему, спасибо Лев за ответ.
plt.hist(data, bins=np.arange(data.min(), data.max()+1))
Чтобы избежать создания нового вопроса, как я могу построить столбцы "посередине" для каждого целого числа? Скажем, я хочу, чтобы столбец для целого числа 3 занимал пространство между 2.5 и 3.5 не между 3 и 4.