用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操作系统上的数组)函数不会 无论数据类型如何,都已加速。
其中
download | https://pypi.python.org/pypi/Bottleneck |
docs | http://berkeleyanalytics.com/bottleneck |
code | https://github.com/kwgoodman/bottleneck |
mailing list | https://groups.google.com/group/bottle-neck |
许可证
瓶颈是在简化的bsd许可下分布的。查看许可文件 详细情况。
安装
要求:
Bottleneck | Python 2.7, 3.5, 3.6; NumPy 1.12.1 |
Compile | gcc, clang, MinGW or MSVC |
Unit tests | nose |
在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>