python中基于pybind11和openmp的快速历史编程。

pygram11的Python项目详细描述


PyGram11

Build Statusbuilds.sr.ht statusDocumentation StatusPyPI versionConda Forge

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(使用__来捕获返回的Nonedue 如果没有重量:

>>>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中看到什么,请打开 发出或拉取请求。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
DIIOP_IOR中的java端口0。TXT,我如何更改它?   hadoop面临的问题:java。lang.NoClassDefFoundError:org/bouncycastle/jcajce/JcaJceHelper在使用更新的BC jar时   java将大科学数转换为长科学数   Java8文件流,如何控制文件的关闭?   是否有类似于dotnetshoutout的资源。com&dotnetkicks。Java世界中的com?   java返回类型void/方法替代方案?   如何使用java。lang.NullPointerException:void 安卓。支持v7。应用程序。ActionBar。setElevation(float)“”在空对象引用上'   java使用kafka流获取时间窗口中给定密钥的最后一个事件   java多边形旋转不正确   java我们应该在params中编写什么。jpbc的属性文件   java如何计算线程数?   使用jar时发生java错误,但不在库本身中   java优先级列表排队方法错误   java和org之间的区别。莫基托。莫基托。任何和组织。莫基托。媒人。任何