Come posso generare un istogramma completo con numpy?
Domanda
Ho un elenco molto lungo in un numpy.array
. Voglio generare un istogramma per questo. Tuttavia, Numa istogramma incorporato richiede un numero predefinito di bin. Qual è il modo migliore per generare un istogramma completo con un cestino per ciascun valore?
Soluzione
Se hai una matrice di numeri interi e il valore massimo non è troppo grande puoi usare numpy.bincount:
hist = dict((key,val) for key, val in enumerate(numpy.bincount(data)) if val)
Modifica: Se disponi di dati float o se i dati sono distribuiti su un intervallo enorme, puoi convertirli in numeri interi procedendo come segue:
bins = numpy.unique(data)
bincounts = numpy.bincount(numpy.digitize(data, bins) - 1)
hist = dict(zip(bins, bincounts))
Altri suggerimenti
Un cestino per ogni valore suona un po 'strano ma non
bins=a.max()-a.min()
dare un risultato simile?
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow