Skip to content

[FEATURE] Hist from Stack #556

@nsmith-

Description

@nsmith-

Describe the problem, if any, that your feature request is related to

Just as one can construct a Stack from several Hist objects, it may be useful to create a Hist from a Stack by promoting the stack labels to a new StrCategory axis in the histogram.

Describe the feature you'd like

import hist

a = hist.Hist.new.Reg(10, 0, 10, name="blah").Double().fill(3.0)
b = hist.Hist.new.Reg(10, 0, 10, name="blah").Double().fill(5.0)
stack = hist.Stack.from_dict({"a": a, "b": b})

out = hist.Hist(
    hist.axis.StrCategory([s.name for s in stack]),
    *stack.axes,
    storage=stack[0].storage_type()
)
for i, h in enumerate(stack):
    out.view(flow=True)[i, ...] = h.view(flow=True)

Perhaps this is sufficient for an implementation?

Describe alternatives, if any, you've considered

My main motivation here is to be able to use slicing syntax on the stack. If full UHI slicing support were available, with the stack axis treated as a StrCategory, then I would probably not need this feature.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions