Hist est une interface conviviale pour les analystes pour boost-histogram, conçue pour Python 3.8+ (les utilisateurs 3.6-3.7 obtiennent des versions plus anciennes). Découvrez les nouveautés.
Vous pouvez installer cette bibliothèque depuis PyPI avec pip :
python3 -m pip install " hist[plot,fit] "
Si vous n'avez pas besoin des fonctionnalités de traçage, vous pouvez ignorer les extras [plot]
et/ou [fit]
. [fit]
n'est actuellement pas pris en charge dans WebAssembly.
Hist fournit actuellement tout ce que boost-histogram fournit, ainsi que les améliorations suivantes :
Hist augmente les axes avec des noms :
name=
est une étiquette unique décrivant chaque axe.label=
est une chaîne facultative utilisée dans le traçage (par défaut, name
si elle n'est pas fournie).NamedHist
est un Hist
qui désactive la plupart des formes d'accès positionnel, obligeant les utilisateurs à utiliser uniquement des noms. La classe Hist
augmente bh.Histogram
avec une construction plus simple :
flow=False
est un moyen rapide de désactiver le flux pour les axes en construction.storage=
peut être omis, les chaînes et les stockages peuvent être positionnels.data=
peut initialiser un histogramme avec des données existantes.Hist.from_columns
peut être utilisé pour initialiser avec un DataFrame ou un dict.Hist prend en charge QuickConstruct, un système de construction sans importation qui ne nécessite pas d'importations supplémentaires :
Hist.new.().().()
.Regular
) ou courts ( Reg
).data=
) peuvent être stockés.Fonctionnalités étendues de l'histogramme :
.name
et .label
, comme les axes..density()
calcule la densité sous forme de tableau..profile(remove_ax)
peut convertir un histogramme ND COUNT en un histogramme (N-1)D MEAN..sort(axis)
prend en charge le tri d'un histogramme selon un axe catégoriel. Prend éventuellement une fonction pour trier..fill_flattened(...)
aplatira et remplira, y compris la prise en charge d'AwkwardArray..integrate(...)
, qui prend les arguments opposés comme .project
.Hist implémente UHI+ ; une extension du système UHI (Unified Histogram Indexing) conçue pour une interactivité sans importation :
j
pour passer aux coordonnées de données dans l'accès ou les tranches.j
sur les tranches à réorganiser.Des routines de traçage rapides encouragent l'exploration :
.plot()
fournit des tracés 1D et 2D (ou utilisez plot1d()
, plot2d()
).plot2d_full()
affiche des projets 1D autour d'un tracé 2D..plot_ratio(...)
crée un tracé de rapport entre l'histogramme et un autre histogramme ou appelable..plot_pull(...)
effectue un pull plot..plot_pie()
crée un diagramme circulaire..show()
fournit une belle impression str en utilisant Histoprint.Piles : travaillez avec des groupes d'histogrammes avec des axes identiques
h.stack(axis)
, en utilisant l'index ou le nom d'un axe ( StrCategory
axes idéal).hist.stacks.Stack(h1, h2, ...)
, ou utiliser from_iter
ou from_dict
..plot()
et .show()
, avec des noms (les étiquettes de tracé sont par défaut les informations sur les axes d'origine)..project
, *
, +
et -
.Nouveaux modules
intervals
prend en charge les intervalles de couverture fréquentistes.Prêt pour le carnet : Hist a une superbe représentation dans le carnet.
from hist import Hist
# Quick construction, no other imports needed:
h = (
Hist . new . Reg ( 10 , 0 , 1 , name = "x" , label = "x-axis" )
. Var ( range ( 10 ), name = "y" , label = "y-axis" )
. Int64 ()
)
# Filling by names is allowed:
h . fill ( y = [ 1 , 4 , 6 ], x = [ 3 , 5 , 2 ])
# Names can be used to manipulate the histogram:
h . project ( "x" )
h [{ "y" : 0.5j + 3 , "x" : 5j }]
# You can access data coordinates or rebin with a `j` suffix:
h [ 0.3j :, :: 2j ] # x from .3 to the end, y is rebinned by 2
# Elegant plotting functions:
h . plot ()
h . plot2d_full ()
h . plot_pull ( Callable )
À partir d'une extraction git, utilisez nox ou exécutez :
python -m pip install -e .[dev]
Voir Directives de contribution pour plus d'informations sur la configuration d'un environnement de développement.
Nous tenons à remercier les contributeurs qui ont rendu ce projet possible (clé emoji) :
Henri Schreiner ? | Nino Lau ? | Chris Burr | Nick Amine | Eduardo Rodrigues | Andrej Novak | Matthieu Feickert |
Kyle Cranmer | Daniel Antrim | Nicolas Smith | Michel Eliachevitch | Jonas Eschle |
Ce projet suit la spécification de tous les contributeurs.
Cette bibliothèque a été principalement développée par Henry Schreiner et Nino Lau.
Ce travail a été soutenu par l'accord de coopération de la National Science Foundation OAC-1836650 (IRIS-HEP) et OAC-1450377 (DIANA/HEP). Toutes les opinions, conclusions, conclusions ou recommandations exprimées dans ce document sont celles des auteurs et ne reflètent pas nécessairement les points de vue de la National Science Foundation.