跳转到主要内容

Boost::Histogram的Python包装器。

项目描述

boost-histogram logo

适用于Python的boost-histogram

Actions Status Documentation Status

PyPI version Conda-Forge PyPI platforms DOI

GitHub Discussion Gitter Scikit-HEP

Python对Boost::Histogram (源码)的绑定,这是一个C++14库。这是制图速度最快的库之一,同时仍提供完整制图对象的功能。请参阅新功能

boost-histogram家族的其他成员包括

  • Hist:一个面向分析人员的原生友好制图库,通过命名轴、许多新快捷方式(包括UHI+、绘图快捷方式等)扩展了boost-histogram。
  • UHI:制图库互操作规范,特别是针对绘图。
  • mplhep:支持UHI制图的matplotlib绘图扩展。
  • histoprint:支持UHI的命令行制图库。
  • dask-histogram:对boost-histogram的Dask支持。

使用方法

Slideshow of features. See expandable text below if the image is not readable.

文本简介(点击展开)
import boost_histogram as bh

# Compose axis however you like; this is a 2D histogram
hist = bh.Histogram(
    bh.axis.Regular(2, 0, 1),
    bh.axis.Regular(4, 0.0, 1.0),
)

# Filling can be done with arrays, one per dimension
hist.fill(
    [0.3, 0.5, 0.2],
    [0.1, 0.4, 0.9],
)

# NumPy array view into histogram counts, no overflow bins
values = hist.values()

# Make a new histogram with just the second axis, summing over the first, and
# rebinning the second into larger bins:
h2 = hist[::sum, :: bh.rebin(2)]

我们支持uhi 可绘图制图协议,因此boost-histogram/Hist制图可以通过任何兼容的库进行绘图,例如mplhep

快捷表

功能简化列表(点击展开)
  • 许多轴类型(全部支持metadata=...
    • bh.axis.Regular(n, start, stop, ...):创建一个规则轴。以下列出了选项。
      • overflow=False:关闭溢出bin
      • underflow=False:关闭下溢bin
      • growth=True:开启增长轴,当添加超出范围的项时添加bin
      • circular=True:开启环绕,超出范围的值环绕到轴上
      • transform=bh.axis.transform.Log:对数间距
      • transform=bh.axis.transform.Sqrt:平方根间距
      • transform=bh.axis.transform.Pow(v):幂间距
      • 另请参阅灵活的函数转换
    • bh.axis.Integer(start, stop, *, underflow=True, overflow=True, growth=False, circular=False):特殊的高速版本,用于宽度为1的等距bin的regular
    • bh.axis.Variable([start, edge1, edge2, ..., stop], *, underflow=True, overflow=True, circular=False):不等距bin间距
    • bh.axis.IntCategory([...], *, growth=False):整数分类
    • bh.axis.StrCategory([...], *, growth=False):字符串分类
    • bh.axis.Boolean():True/False轴
  • 轴功能
    • .index(value):轴上(或多个点)的索引
    • .value(index):轴上分数bin(或多个bin)的值
    • .bin(i):bin边缘(连续轴)或bin值(离散轴)
    • .centers:N个bin中心(如果是连续的)
    • .edges:N+1个bin边缘(如果是连续的)
    • .extent:bin数量(包括下/溢出)
    • .metadata:用户想要存储的任何内容
    • .traits:设置在轴上的选项
    • .size:bin数量(不包括下/溢出)
    • .widths: N 个箱宽度
  • 多种存储类型
    • bh.storage.Double(): 用于加权值的双精度浮点数(默认)
    • bh.storage.Int64(): 64位无符号整数
    • bh.storage.Unlimited(): 开始时较小,但可以扩展到无限精度的整数或双精度浮点数。
    • bh.storage.AtomicInt64(): 线程安全的填充,实验性。不支持在线程中扩展轴。
    • bh.storage.Weight(): 存储权重和权重平方和。
    • bh.storage.Mean(): 接受一个样本并计算样本的均值(配置文件)。
    • bh.storage.WeightedMean(): 接受一个样本和一个权重。计算样本的加权均值。
  • 累加器
    • bh.accumulator.Sum: 高精度求和(Neumaier)- 在对数值直方图求和时使用
    • bh.accumulator.WeightedSum: 跟踪加权总和和方差
    • bh.accumulator.Mean: 运行计数、均值和方差(Welford增量算法)
    • bh.accumulator.WeightedMean: 跟踪加权总和、均值和方差(West增量算法)
  • 直方图操作
    • h.ndim: 维数数量
    • h.size or len(h): 箱的数量
    • +: 将两个直方图相加(存储类型必须匹配当前类型)
    • *=: 乘以一个标量(不是所有存储类型)(hist * scalarscalar * hist 也支持)
    • /=: 除以一个标量(不是所有存储类型)(hist / scalar 也支持)
    • .kind: 根据存储类型,可以是 bh.Kind.COUNTbh.Kind.MEAN
    • .storage_type: 获取直方图存储类型
    • .sum(flow=False): 所有箱的总计数
    • .project(ax1, ax2, ...): 投影到列出的轴(数字)。也可以重新排序轴。
    • .to_numpy(flow=False, view=False): 转换为NumPy风格的元组(带有或没有下溢/上溢箱)
    • .view(flow=False): 获取对箱内容的视图(带有或没有下溢/上溢箱)
    • .values(flow=False): 获取对值的视图(计数或均值,取决于存储类型)
    • .variances(flow=False): 如果可用,获取方差
    • .counts(flow=False): 获取所有存储类型的有效计数
    • .reset(): 将计数器设置为0(增长轴保持相同大小)
    • .empty(flow=False): 检查直方图是否为空(如果需要,也可以检查流箱)
    • .copy(deep=False): 创建直方图的副本
    • .axes: 获取轴作为元组(也提供所有轴的属性)
      • .axes[0]: 获取第0个轴
      • .axes.edges: 下限值作为广播准备好的数组
      • .axes.centers: 箱中心作为广播准备好的数组
      • .axes.widths: 箱宽度作为广播准备好的数组
      • .axes.metadata: 轴元数据的元组
      • .axes.size: 轴大小的元组(无流的大小)
      • .axes.extent: 轴范围(包含流的范围)的元组
      • .axes.bin(*args): 返回箱边缘作为元组的元组(连续轴)或值(描述)
      • .axes.index(*args): 返回每个轴的值在箱中的索引
      • .axes.value(*args): 返回每个轴的索引在箱中的值
  • 索引 - 支持以下链接的索引UHI Indexing
    • 箱内容访问/设置
      • v = h[b]: 通过索引数字访问箱内容
      • v = h[{0:b}]: 所有操作都可以通过 axis:item 字典来表示,而不是通过位置(主要用于切片)
    • 切片以获取直方图或设置值数组
      • h2 = h[a:b]: 访问直方图的切片,如果有必要,切割部分将进入流箱
      • h2 = h[:, ...]: 支持与NumPy相同的 :...
      • h2 = h[::sum]:切片中的第三个元素是“操作”
      • h[...] = array:设置桶内容,包括或省略流量桶
    • 特殊访问器
      • bh.loc(v):在坐标轴上提供值而不是桶号
      • bh.underflow:下溢桶(在切片上使用空开始进行切片代替)
      • bh.overflow:溢出桶(在切片上使用空结束进行切片代替)
    • 特殊操作(切片中的第三个元素)
      • sum:通过投影移除轴;如果给出了限制,则使用这些限制
      • bh.rebin(n):重新对轴进行分箱
  • NumPy 兼容性
    • bh.numpy 提供了比 NumPy 历史函数更快的 即插即用替换
    • 直方图遵循缓冲区接口,并提供 .view()
    • 直方图可以使用 .to_numpy() 转换为 NumPy 风格的输出元组
  • 详细信息
    • 所有对象都支持复制/深复制/pickle
    • 完全静态类型,使用 MyPy 进行测试。

安装

您可以使用 pip 从 PyPI 安装此库

python3 -m pip install boost-histogram

所有 Python 的常规最佳实践都适用;Pip 应该不太旧(Pip 9 非常旧),您应该在一个虚拟环境中,等等。需要 Python 3.8+;对于旧版本的 Python(3.5 和 2.7),将安装 0.13,其 API 与 1.0 相当,但不会获得新功能。1.3.x 是最后一个支持 Python 3.6 的系列。1.4.x 是最后一个支持 Python 3.7 的系列。

可用的二进制文件

获取 boost-histogram 最简单的方法是使用二进制 wheel,这发生在您在支持的平台运行上述命令时。wheel 是使用 cibuildwheel 生成的;所有常见平台都在 boost-histogram 中提供了 wheel

系统 Arch Python 版本 PyPy 版本
manylinux2014 64 位 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.13t 3.9, 3.10
manylinux2014 ARM64 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.13t 3.9, 3.10
musllinux_1_1 64 位 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.13t
macOS 10.9+ Intel 64 位 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.13t 3.9, 3.10
macOS 11+ AS Arm64 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.13t 3.9, 3.10
Windows 32 位 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.13t
Windows 64 位 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.13t 3.9, 3.10

PowerPC 或 IBM-Z 轮子不可用,但可根据要求提供。

如果您在的 Linux 系统不是 manylinux 的“many”或 musllinux 中的 musl,例如 ClearLinux,则通常可以从源代码构建,因为这些系统上的编译器通常相当新。如果使用 sdist 而不是 wheel 进行安装,则将花费更长的时间。所有依赖项都是仅包含头文件的,并且已包含在内。

Conda-Forge

boost-histogram 软件包也可在 conda-forge 上找到。所有支持的变体都可用。

conda install -c conda-forge boost-histogram

源代码构建

对于源代码构建,例如从“SDist”软件包,唯一的要求是 C++14 兼容的编译器。编译器要求由 Boost.Histogram 的 C++ 要求决定:gcc >= 5.5、clang >= 3.8 或 msvc >= 14.1。

不需要或需要 Boost(这仅取决于包含的仅头文件的依赖项)。如果您愿意,可以直接从 GitHub 安装。

python -m pip install git+https://github.com/scikit-hep/boost-histogram.git@develop

开发

有关如何设置开发环境的详细信息,请参阅 CONTRIBUTING.md

贡献者

我们想感谢使这个项目成为可能的贡献者(emoji key


Henry Schreiner

🚧 💻 📖

Hans Dembinski

🚧 💻

N!no

⚠️ 📖

Jim Pivarski

🤔

Nicholas Smith

🐛

physicscitizen

🐛

Chanchal Kumar Maji

📖

Doug Davis

🐛

Pierre Grimaud

📖

Beojan Stanislaus

🐛

Popinaodude

🐛

Congqiao Li

🐛

alexander-held

🐛

Chris Burr

📖

Konstantin Gizdov

📦 🐛

Kyle Cranmer

📖

Aman Goel

📖 💻

Jay Gohil

📖

本项目遵循all-contributors规范。

演讲和其他文档/教程资源

官方文档在此,包括快速入门


致谢

此库主要由Henry Schreiner和Hans Dembinski开发。

本工作的支持由美国国家科学基金会合作协议OAC-1836650(IRIS-HEP)和OAC-1450377(DIANA/HEP)提供。在此材料中表达的意见、发现、结论或建议均为作者的观点,不一定反映美国国家科学基金会的观点。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

boost_histogram-1.5.0.tar.gz (1.2 MB 查看哈希值)

上传时间 源代码

构建分布

boost_histogram-1.5.0-pp310-pypy310_pp73-win_amd64.whl (738.8 kB 查看哈希值)

上传时间 PyPy Windows x86-64

boost_histogram-1.5.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ x86-64

boost_histogram-1.5.0-pp310-pypy310_pp73-macosx_14_0_arm64.whl (950.0 kB 查看哈希值)

上传时间: PyPy macOS 14.0+ ARM64

boost_histogram-1.5.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl (1.1 MB 查看哈希值)

上传时间: PyPy macOS 10.15+ x86-64

boost_histogram-1.5.0-pp39-pypy39_pp73-win_amd64.whl (738.8 kB 查看哈希值)

上传时间: PyPy Windows x86-64

boost_histogram-1.5.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ x86-64

boost_histogram-1.5.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl (950.8 kB 查看哈希值)

上传时间: PyPy macOS 11.0+ ARM64

boost_histogram-1.5.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl (1.1 MB 查看哈希值)

上传时间: PyPy macOS 10.15+ x86-64

boost_histogram-1.5.0-cp313-cp313t-win_amd64.whl (849.7 kB 查看哈希值)

上传时间: CPython 3.13t Windows x86-64

boost_histogram-1.5.0-cp313-cp313t-win32.whl (595.8 kB 查看哈希值)

上传时间: CPython 3.13t Windows x86

boost_histogram-1.5.0-cp313-cp313t-musllinux_1_2_x86_64.whl (2.2 MB 查看哈希值)

上传时间: CPython 3.13t musllinux: musl 1.2+ x86-64

boost_histogram-1.5.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB 查看哈希值)

上传于 CPython 3.13t manylinux: glibc 2.17+ x86-64

boost_histogram-1.5.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (977.7 kB 查看哈希值)

上传于 CPython 3.13t manylinux: glibc 2.17+ ARM64

boost_histogram-1.5.0-cp313-cp313t-macosx_11_0_arm64.whl (1.0 MB 查看哈希值)

上传于 CPython 3.13t macOS 11.0+ ARM64

boost_histogram-1.5.0-cp313-cp313t-macosx_10_13_x86_64.whl (1.2 MB 查看哈希值)

上传于 CPython 3.13t macOS 10.13+ x86-64

boost_histogram-1.5.0-cp313-cp313-win_amd64.whl (746.7 kB 查看哈希值)

上传于 CPython 3.13 Windows x86-64

boost_histogram-1.5.0-cp313-cp313-win32.whl (541.4 kB 查看哈希值)

上传于 CPython 3.13 Windows x86

boost_histogram-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl (2.2 MB 查看哈希值)

上传于 CPython 3.13 musllinux: musl 1.2+ x86-64

boost_histogram-1.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB 查看哈希值)

上传于 CPython 3.13 manylinux: glibc 2.17+ x86-64

boost_histogram-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (965.6 kB 查看哈希值)

上传于 CPython 3.13 manylinux: glibc 2.17+ ARM64

boost_histogram-1.5.0-cp313-cp313-macosx_11_0_arm64.whl (948.9 kB 查看哈希值)

上传于 CPython 3.13 macOS 11.0+ ARM64

boost_histogram-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl (1.1 MB 查看哈希值)

上传于 CPython 3.13 macOS 10.13+ x86-64

boost_histogram-1.5.0-cp312-cp312-win_amd64.whl (746.7 kB 查看哈希)

上传于 CPython 3.12 Windows x86-64

boost_histogram-1.5.0-cp312-cp312-win32.whl (541.4 kB 查看哈希)

上传于 CPython 3.12 Windows x86

boost_histogram-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl (2.2 MB 查看哈希)

上传于 CPython 3.12 musllinux: musl 1.2+ x86-64

boost_histogram-1.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB 查看哈希)

上传于 CPython 3.12 manylinux: glibc 2.17+ x86-64

boost_histogram-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (965.8 kB 查看哈希)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARM64

boost_histogram-1.5.0-cp312-cp312-macosx_11_0_arm64.whl (948.8 kB 查看哈希)

上传于 CPython 3.12 macOS 11.0+ ARM64

boost_histogram-1.5.0-cp312-cp312-macosx_10_9_x86_64.whl (1.1 MB 查看哈希)

上传于 CPython 3.12 macOS 10.9+ x86-64

boost_histogram-1.5.0-cp311-cp311-win_amd64.whl (738.7 kB 查看哈希)

上传于 CPython 3.11 Windows x86-64

boost_histogram-1.5.0-cp311-cp311-win32.whl (536.1 kB 查看哈希)

上传于 CPython 3.11 Windows x86

boost_histogram-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl (2.1 MB 查看哈希)

上传于 CPython 3.11 musllinux: musl 1.2+ x86-64

boost_histogram-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

boost_histogram-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (987.6 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

boost_histogram-1.5.0-cp311-cp311-macosx_11_0_arm64.whl (948.5 kB 查看哈希值)

上传于 CPython 3.11 macOS 11.0+ ARM64

boost_histogram-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl (1.1 MB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ x86-64

boost_histogram-1.5.0-cp310-cp310-win_amd64.whl (737.8 kB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

boost_histogram-1.5.0-cp310-cp310-win32.whl (535.3 kB 查看哈希值)

上传于 CPython 3.10 Windows x86

boost_histogram-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.2+ x86-64

boost_histogram-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

boost_histogram-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (986.8 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

boost_histogram-1.5.0-cp310-cp310-macosx_11_0_arm64.whl (947.0 kB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

boost_histogram-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl (1.1 MB 查看哈希值)

上传时间: CPython 3.10 macOS 10.9+ x86-64

boost_histogram-1.5.0-cp39-cp39-win_amd64.whl (827.9 kB 查看哈希值)

上传时间: CPython 3.9 Windows x86-64

boost_histogram-1.5.0-cp39-cp39-win32.whl (535.5 kB 查看哈希值)

上传时间: CPython 3.9 Windows x86

boost_histogram-1.5.0-cp39-cp39-musllinux_1_2_x86_64.whl (2.1 MB 查看哈希值)

上传时间: CPython 3.9 musllinux: musl 1.2+ x86-64

boost_histogram-1.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.17+ x86-64

boost_histogram-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (985.4 kB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.17+ ARM64

boost_histogram-1.5.0-cp39-cp39-macosx_11_0_arm64.whl (947.7 kB 查看哈希值)

上传时间: CPython 3.9 macOS 11.0+ ARM64

boost_histogram-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl (1.1 MB 查看哈希值)

上传时间: CPython 3.9 macOS 10.9+ x86-64

boost_histogram-1.5.0-cp38-cp38-win_amd64.whl (738.0 kB 查看哈希值)

上传时间: CPython 3.8 Windows x86-64

boost_histogram-1.5.0-cp38-cp38-win32.whl (535.2 kB 查看哈希值)

上传时间: CPython 3.8 Windows x86

boost_histogram-1.5.0-cp38-cp38-musllinux_1_2_x86_64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.2+ x86-64

boost_histogram-1.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

boost_histogram-1.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (986.6 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

boost_histogram-1.5.0-cp38-cp38-macosx_11_0_arm64.whl (947.3 kB 查看哈希值)

上传于 CPython 3.8 macOS 11.0+ ARM64

boost_histogram-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl (1.1 MB 查看哈希值)

上传于 CPython 3.8 macOS 10.9+ x86-64

支持者

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面