NumPy 0.9.8 is a bug-fix and optimization release with a few new features. The C-API was changed, so extensions compiled against NumPy 0.9.6 will need re-compilation to avoid errors.

The C-API should be stabilizing. The next release will be 1.0 which will come out in a series of release-candidates during Summer 2006.

There were many users and developers who contributed to the fixes for this release. They deserve much praise and thanks. For details see the Trac pages where bugs are reported and fixed.

**Note:** The test_scalarmath.py file causes segfaults in version 0.9.8 on some platforms so to get numpy.test() to run without error you should delete the file site-packages/numpy/core/tests/test_scalarmath.py

http://projects.scipy.org/scipy/numpy/

## New features (and changes)

- string and unicode comparisons now work on array objects without having to go through the chararray.
- string and unicode scalars selected from an array have NULL bytes removed so that comparisons work correctly.
- changed 'fortran=' keywords to 'order=' keywords. The order= keyword accepts 'C', 'FORTRAN', or None as arguments. The order= keyword also accepts True for 'FORTRAN' and False for 'C' for backwards compatibility.
- The error-lookup for math functions was changed to work on a per-thread basis instead of a local, module (global), builtin name-space basis.
PyArray_CHAR now works as does the 'c' code for specifying a 1-element string. This improves compatibility with Numeric when PyArray_CHAR and typecode='c' are used. Now array("mystr", 'c') works the same as it did in Numeric.

- where(condition) and condition.nonzero() always return tuples. nonzero(condition) is for backwards compatibility with Numeric and only works with 1-d arrays.
- overflow checking is no longer done an array multiplication for consistency with addition and subtraction.
- math module added to numpy namespace as it used to be in the Numeric name-space. numpy.emath has extended math functions
- matrices return correctly shaped matrices for reduction-like methods and scalars for reduction over the entire array (i.e. A.argmax() returns a scalar.)
- numpy should install now with easy_install from setuptools
- masked array improvements including more methods added.

## Speed ups

- scalarmath module added to speed up math on array scalars (the objects returned when indexing into arrays).
- a.flags is now a builtin object
- copying code was sped up significantly for well-behaved cases.
- indexing a 1-d array by an integer has been sped-up.

## Other fixes

- fixed problem with bad arguments to .transpose() not being caught.
- fix problem with .argmax(axis) and .argmin(axis) for multi-dimensional arrays.
- cov and corrcoef fixed to work correctly and not in-place modify the input.
- several fixes for numpy.distutils were applied
- errors involving reshape and fortran-order arrays fixed
- fixed several errors in optimized blasdot function
- several segfaults fixed
- record array pickling and byteswapped pickling fixed.
- fix sorting on byteswapped arrays
- fancy-indexing no longer alters the index array.
- divbyzero should work now on optimizing compilers.
- vectorize segfaults should be fixed.
b.shape = <tuple> now fails as it should for non-contiguous arrays

- fixed errors apperaing in use of flattened and byteswapped arrays
- several memory leaks closed and other Valgrind-discovered errors fixed.
- fixed attribute access for record arrays and their sub-classes