Skip to content

Commit

Permalink
feat: add a .T shortcut
Browse files Browse the repository at this point in the history
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
  • Loading branch information
henryiii committed Aug 1, 2023
1 parent be0bda3 commit 7216c9d
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/hist/basehist.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,10 @@ def project(self, *args: int | str) -> Self | float | bh.accumulators.Accumulato
int_args = [self._name_to_index(a) if isinstance(a, str) else a for a in args]
return super().project(*int_args)

@property
def T(self) -> Self:
return self.project(*reversed(range(self.ndim))) # type: ignore[return-value]

def fill(
self,
*args: ArrayLike,
Expand Down
20 changes: 20 additions & 0 deletions tests/test_general.py
Original file line number Diff line number Diff line change
Expand Up @@ -953,3 +953,23 @@ def test_integrate():
assert h1[{"x": 4j}] == 2
assert h1[{"x": 2j}] == 1
assert h2[{"x": 1j}] == 3


def test_T_property():
# Create a 2D histogram with some data
hist_data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
h = hist.Hist(
hist.axis.Regular(3, 0, 1, flow=False),
hist.axis.Regular(3, 5, 6, flow=False),
data=hist_data,
)

assert h.T.values() == approx(h.values().T)
assert h.T.axes[0] == h.axes[1]
assert h.T.axes[1] == h.axes[0]


def test_T_empty():
hist_empty = hist.Hist()
hist_T_empty = hist_empty.T
assert hist_empty == hist_T_empty

0 comments on commit 7216c9d

Please sign in to comment.