一个纯python库,用于使用numba进行基准测试的可伸缩数字

fastats的Python项目详细描述


#快速
[![构建状态](https://travis-ci.org/fastats/fastats.svg?branch=master)(https://travis ci.org/fastats/fastats)
[![生成状态(Windows)](https://ci.appveyor.com/api/projects/status/9ufvyclit358sfb8/branch/master?svg=true)(https://ci.appveyor.com/project/pawroman/fastats/branch/master)
[![codecov](https://codecov.io/gh/fastats/fastats/branch/master/graph/badge.svg)(https://codecov.io/gh/fastats/fastats)
[![科达西徽章](https://api.codacy.com/project/badge/grade/2199521147834D58B9F0E8E155C97309)(https://www.codacy.com/app/dave.willmer/fastats?utm_source=github.com&;utm_medium=referral&;utm_content=fastats/fastats&;utm_campaign=badge_grade)
[![许可证](https://img.shields.io/badge/license mit blue.svg)(https://opensource.org/licenses/mit)

一个纯python库,用于基准化、可伸缩的数字,使用[numba]构建(https://numba.pydata.org/)。

[fastats邮件列表](https://groups.google.com/forum/!!论坛/快速学习)


--


数据越来越大,越来越复杂,代码很难扩展到这些级别。代码越来越大,越来越复杂,开发人员很难扩展到这些级别。

更容易调试。

``fastats`(即fast stats)试图通过在公共函数中使用线性代数进行性能优化,使用[numba](https://numba.pydata.org/)
从[anaconda](https://www.anaconda.com/)jit编译优化的python code到
矢量化的本机代码,而在纯python模式下运行进行调试则很简单。

对于单调函数,我们可以使用newton-raphson解算器来查找根:

`` python
从fastats导入newton-raphson

def my-raphson(x):
返回x**3-x-1

result=newton-raphson(0.025,1e-6,root=my-func)
````

这使用[numba](https://numba.pydata.org/)在后台jit将python代码编译为本地代码,并在需要时使用fastats转换调用"my_func"。

但是,我们通常希望使用fast函数并将其应用于大型数据集,因此"fastats"允许您将优化的函数作为调用返回table:

`` python
newton opt=newton raphson(0.025,1e-6,root=my_func,return_callable=true)


result=newton opt(0.03,1e-6)
````

.03,1e-6)
785 ns±8.2 ns/循环(7次运行的平均值±标准偏差,每次运行1000000个循环)
````

ewton(my_func,x0=0.03,tol=1e-6)
25.6μs±954ns/圈(平均值±标准偏差,7次,每次10000圈)
````





python/lua/ruby等大多数高级语言都有一个正式的c-api,它允许我们轻松地"下拉"到本机代码(如上面所示的scipy)。然而,这不仅费时、容易出错而且让许多开发人员感到不快,而且从上面的例子中可以看出,专门的C扩展不会自动扩展到更大的数据。

通过使用[numba](https://numba.pydata.org/)来JIT编译整个函数输入输出n降到本机代码,我们可以快速地扩展到更大的数据大小,而不必离开python的简单性。



秘密在于处理函数参数。

这对于专业图书馆来说很有效,但是在这个"大"数据的世界里,下一步通常是"现在我想将这个函数应用到这个1000万个项目的数组中"。这就是c扩展/本机库技术的失败之处。

c扩展到高级语言必然受到定义的api的限制,即,您可以编写一个c函数来获取3个浮点或3个浮点数组,但处理任意输入是非常困难的。

``fastats``允许您将函数作为参数传递到``numba``中,从而抽象出特定的循环或并发结构,从而加快、更干净的开发时间和更快的执行时间。

python>;=仅限3.5。强烈建议使用python 3.6或更新版本。

/>有关测试要求,请查看[.travis.yml](.travis.yml)或[.appveyor.yml](.appveyor.yml)。

####发起人

<;img src="http://pico-software.com/images/picosoftware.png"width="300"alt="pico software"title="pico software"/>;

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

推荐PyPI第三方库


热门话题
为什么sonar认为这个表达式总是错误的   java为什么PrintWriter不能工作?   java将数组从php发送到安卓 studio   java在静态方法中调用非静态方法   java何时使用Swingutiles。invokeAndWait/invokeLater   java jdbc:embeddeddatabase引发HsqlException   java度量Hyperledger结构项目的性能   java将字符串转换为Blob   java如何将文本添加到文本区域而不是替换它   java如何对100GB的字符串进行排序   发生异常错误::java。lang.OutOfMemoryError:Java堆空间   安卓 studio java。lang.NoClassDefFoundError:org。slf4j。帮手。消息格式化程序   当从命令promt运行时,java maven不是运行主类   用于翻转其余端点的功能的java注释   Oracle函数中的java默认值   java如何访问maven。建筑Quarkus中用于资源筛选的时间戳   java如何在一个JText区域中显示大量值JTable选定行   如何在java中用约束注释web服务参数?   java为了获得流信息,我们应该向userFriendlySelector函数传递哪些参数   java Google GSON嵌套哈希映射反序列化