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第三方库


热门话题
netbeans根据命名约定返回布尔类的getter的Java名称   java如何在MessageFormat中使用单引号   java如何在整数数组中只对奇数排序,而将偶数保留在其原始位置?   自定义ArrayAdapter中未定义java构造函数   java joda时间格式化程序解析yyyyymmdd(额外一小时)   java Spring引导控制器测试始终返回404   java如何提取类文件以获取该类文件中的类?   JTable java列不会显示   java Selenium Web驱动程序输出错误的Web表行数   当应用程序在mac上打开时,java SWT选项卡项会从页面上消失   java如何将html文件映射到过滤器   swing Java计算一段时间内两点之间的转换   javawebsphere和javax。xml。ws。spi。提供者:提供者组织。阿帕奇。axis2。jaxws。spi。提供者不是子类型   For循环在Java中没有按预期继续?   java如何配置gson以排除0个整数值   java读取一个由tab分隔的文件,并将单词放入ArrayList中   java我需要做什么才能让LiveConnect重新工作?   sqlservermerge2xml&使用java提取这些数据并将其存储在db表中   java如何在模型中添加新对象时通知网格