用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如何显示因用户而异的SQLite存储数据?   转换java。sql。将映射传递给Jackon的valueToTree方法时StringNode的时间戳   从java中的列表json获取值   unicode Java字符存储在什么编码中?   java如何让Spring数据存储库中的默认方法命中缓存?   java使用readClassDescriptor()和resolveClass()来允许序列化版本控制   数组通过另一个矩阵的一部分填充矩阵   如果包含使用正则表达式的字符串,则替换父XML标记的java   java清除SharedReference中的单个变量   java将变量值从一个jsp页面传输到另一个jsp页面   java JDBC+SQLite:DriveManager不加载所需的驱动程序   相同源代码的java Kotlin构建生成不同的二进制文件   Java中的元组枚举