用c语言编写的快速numpy数组函数

Bottleneck的Python项目详细描述


瓶颈是用C编写的快速numpy数组函数的集合。

我们试试吧。创建numpy数组:

>>> import numpy as np
>>> a = np.array([1, 2, np.nan, 4, 5])

找到平均值:

>>> import bottleneck as bn
>>> bn.nanmean(a)
3.0

移动窗口平均值:

>>> bn.move_mean(a, window=2, min_count=1)
array([ 1. ,  1.5,  2. ,  4. ,  4.5])

基准

瓶颈来自基准套件:

>>> bn.bench()
Bottleneck performance benchmark
    Bottleneck 1.3.0.dev0; Numpy 1.12.1
    Speed is NumPy time divided by Bottleneck time
    NaN means approx one-fifth NaNs; float64 used

              no NaN     no NaN      NaN       no NaN      NaN
               (100,)  (1000,1000)(1000,1000)(1000,1000)(1000,1000)
               axis=0     axis=0     axis=0     axis=1     axis=1
nansum         67.3        0.3        0.7        2.5        2.4
nanmean       194.8        1.9        2.1        3.4        3.1
nanstd        241.5        1.6        2.1        2.7        2.6
nanvar        229.7        1.7        2.1        2.7        2.5
nanmin         34.1        0.7        1.1        0.8        2.6
nanmax         45.6        0.7        2.7        1.0        3.7
median        111.0        1.3        5.6        1.0        4.8
nanmedian     108.8        5.9        6.7        5.6        6.7
ss             16.3        1.1        1.2        1.6        1.6
nanargmin      89.2        2.9        5.1        2.2        5.6
nanargmax     107.4        3.0        5.4        2.2        5.8
anynan         19.4        0.3       35.0        0.5       29.9
allnan         39.9      146.6      128.3      115.8       75.6
rankdata       55.0        2.6        2.3        2.9        2.8
nanrankdata    59.8        2.8        2.2        3.2        2.5
partition       4.4        1.2        1.6        1.0        1.4
argpartition    3.5        1.1        1.4        1.1        1.6
replace        17.7        1.4        1.4        1.3        1.4
push         3440.0        7.8        9.5       20.0       15.5
move_sum     4743.0       75.7      156.1      195.4      211.1
move_mean    8760.9      116.2      167.4      252.1      258.8
move_std     8979.9       96.1      196.3      144.0      256.3
move_var    11216.8      127.3      243.9      225.9      321.4
move_min     2245.3       20.6       36.7       23.2       42.1
move_max     2223.7       20.5       37.2       24.1       42.4
move_argmin  3664.0       48.2       73.3       40.2       83.9
move_argmax  3916.9       42.0       75.4       41.5       81.2
move_median  2023.3      166.8      173.7      153.8      154.3
move_rank    1208.5        1.9        1.9        2.5        2.8

您还可以使用 例如,命令:

>>> bn.bench_detailed("move_median", fraction_nan=0.3)

只有数据类型(dtype)为int32、int64、float32和float64的数组 加速。所有其他数据类型都会导致调用较慢的、未被调用的 功能。在字节交换输入数组的罕见情况下(例如,一个大端 在一个小小的endian操作系统上的数组)函数不会 无论数据类型如何,都已加速。

许可证

瓶颈是在简化的bsd许可下分布的。查看许可文件 详细情况。

安装

要求:

BottleneckPython 2.7, 3.5, 3.6; NumPy 1.12.1
Compilegcc, clang, MinGW or MSVC
Unit testsnose

在GNU/Linux、Mac OS X等上安装瓶颈。

$ sudo python setup.py install

要在Windows上安装瓶颈,请首先安装mingw并将其添加到 系统路径。然后使用以下命令安装瓶颈:

python setup.py install --compiler=mingw32

或者,可以使用christoph gohlke创建的windows二进制文件: http://www.lfd.uci.edu/~gohlke/pythonlibs/#bottleneck

单元测试

安装瓶颈后,运行单元测试套件:

>>> import bottleneck as bn
>>> bn.test()
<snip>
Ran 169 tests in 57.205s
OK
<nose.result.TextTestResult run=169 errors=0 failures=0>

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

推荐PyPI第三方库


热门话题
java在ArrayList中比较数字   java在Kotlin中使异步调用同步   让“Scala编程”junit示例在IntelliJ中工作的java问题   java Servlet侦听器未在ContextListener中设置属性   将Microsoft SQL Server数据库连接到我的Java项目   加载资源时出现java“需要注册工厂”异常   java如何使用POI检查excel中的重复记录?   java如何更改机器生成的代码   java如何确保重写的方法是同步的   用Spring编写Hibernate时的java XML奥秘   java管理mysql数据库中存储的用户权限   java如何运行。来自Javascript的jar方法   java我想在Web应用程序中进行身份验证&对桌面应用程序使用相同的凭据。我该怎么做?