用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将spring j_spring_安全检查迁移到登录   log4j2中自定义appender中AppConfig的java问题   在将java转换为Json时是否可以忽略内部类名和变量   用java将PDF文件转换为十六进制格式   java将值从AsyncTask返回到主类   java如何导入带有部署变量类名的静态函数?   java Spring Boot@ConfigurationProperties未从环境检索属性   java为什么API调用需要80毫秒的延迟才能到达控制器(在Google应用程序引擎中)?   XML配置中MarshallingMessageConverter中的java设置MarshallTo获取无效属性“MarshallTo”   java从群中获取facebook帖子   @ComponentScan的java excludeFilters不起作用   java将单选按钮值从一个类传递到另一个类   java使JTextArea在Swing中可滚动   java Android增强现实应用程序:将球坐标旋转到设备坐标系