python中基于pybind11和openmp的快速历史编程。
pygram11的Python项目详细描述
PyGram11
python中简单快速的历史编程 OpenMP(借助 pybind11)。
pygram11
提供计算直方图的快速函数(和
它们的统计不确定性)。api非常简单,
文档found here(您将
也可以找到some
benchmarks
在那里)。我还用一些简单的
例子。
安装
pygram11只需要NumPy。从 你需要一个C++ 11编译器支持的C++编译器。
来自Pypi
为Linux(从0.5.0版开始)和 MacOS(从0.5.1版开始),可以从 PyPI通过PIP。
pip install pygram11
来自Conda Forge
对于通过conda
包管理器的简单安装过程
pygram11 is part of
conda-forge。
conda install pygram11 -c conda-forge
请注意,在macos上,来自llvm的openmp库(libomp
)
如果您的conda
环境包括
英特尔数学内核库(MKL)软件包由
水蟒。您可能需要安装nomkl
包以防止
clash(英特尔MKL加速了许多线性代数运算,但是
不影响PyGram11):
conda install nomkl ## sometimes necessary fix (macOS only)
来源
pip install git+https://github.com/douglasdavis/pygram11.git@master
要确保从源代码生成中的OpenMP加速,请读取OpenMP
文档的部分。如果在Linux上有一个现代的GCC版本,那么
也许不用担心什么。如果你在macos上,
您可能需要从自制程序安装libomp
。
note:对于早于v0.5的版本,当从源代码或
pypi,pybind11
需要在
pygram11
(因为setup.py
使用pybind11
来确定include
目录)。从v0.5开始pybind11
与源绑定
用于非二进制(conda forge或wheel)安装。
运行中
一维加权数据的直方图(具有固定的行宽) 使用OpenMP加速:
>>>x=np.random.randn(10000)>>>w=np.random.uniform(0.8,1.2,10000)>>>h,staterr=pygram11.histogram(x,bins=40,range=(-4,4),weights=w,omp=True)
一个固定宽度的直方图,它保存了
第一个和最后一个bin(使用__
来捕获返回的None
due
如果没有重量:
>>>x=np.random.randn(1000000)>>>h,__=pygram11.histogram(x,bins=20,range=(-3,3),flow=True,omp=True)
二维柱状图,带可变宽度箱:
>>>x=np.random.randn(10000)>>>y=np.random.randn(10000)>>>xbins=[-2.0,-1.0,-0.5,1.5,2.0]>>>ybins=[-3.0,-1.5,-0.1,0.8,2.0]>>>h,__=pygram11.histogram2d(x,y,bins=[xbins,ybins])
对同一数据进行多重权值变化的直方图,然后 将结果放入数据帧(输入pandas数据帧将是 解释为numpy数组):
>>>weights=pd.DataFrame({"weight_a":np.abs(np.random.randn(10000)),..."weight_b":np.random.uniform(0.5,0.8,10000),..."weight_c":np.random.rand(10000)})>>>data=np.random.randn(10000)>>>count,err=pygram11.histogram(data,bins=20,range=(-3,3),...weights=weights,flow=True,omp=True)>>>count_df=pd.DataFrame(count,columns=weights.columns)>>>err_df=pd.DataFrame(err,columns=weights.columns)
其他库
- 我们正在努力开发面向对象的历史编程 为python调用的库 boost-histogram。这个 图书馆将提供完整的W.R.T.功能,物理学家所需的一切 有直方图。
- 使用numpy c api在python中实现简单快速的历史编程: fast-histogram。不 重量或溢出)。
- 如果您想用python计算gpu上的直方图,请查看 cupy.histogram。他们 只有1D直方图(没有权重或溢出)。
如果你想在pygram11中看到什么,请打开 发出或拉取请求。