# Bottleneck 1.0.0

Release date: 2015-02-06

This release is a complete rewrite of Bottleneck.

## Faster

- “python setup.py build” is 18.7 times faster

- Function-call overhead cut in half—a big speed up for small input arrays

- Arbitrary ndim input arrays accelerated; previously only 1d, 2d, and 3d

- bn.nanrankdata is twice as fast for float input arrays

- bn.move_max, bn.move_min are faster for int input arrays

- No speed penalty for reducing along all axes when input is Fortran ordered

## Smaller

- Compiled binaries 14.1 times smaller

- Source tarball 4.7 times smaller

- 9.8 times less C code

- 4.3 times less Cython code

- 3.7 times less Python code

## Beware

- Requires numpy 1.9.1

- Single API, e.g.: bn.nansum instead of bn.nansum and nansum_2d_float64_axis0

- On 64-bit systems bn.nansum(int32) returns int32 instead of int64

- bn.nansum now returns 0 for all NaN slices (as does numpy 1.9.1)

- Reducing over all axes returns, e.g., 6.0; previously np.float64(6.0)

- bn.ss() now has default axis=None instead of axis=0

- bn.nn() is no longer in bottleneck

## min_count

- Previous releases had moving window function pairs: move_sum, move_nansum

- This release only has half of the pairs: move_sum

- Instead a new input parameter, min_count, has been added

- min_count=None same as old move_sum; min_count=1 same as old move_nansum

- If # non-NaN values in window < min_count, then NaN assigned to the window

- Exception: move_median does not take min_count as input

## Bug Fixes

- Can now install bottleneck with pip even if numpy is not already installed

- bn.move_max, bn.move_min now return float32 for float32 input

## Contributors