ANN: numarray-1.0 released

Todd Miller
02 Jul 2004 17:05:48 -0400

Release Notes for numarray-1.0

Numarray is an array processing package designed to efficiently
manipulate large multi-dimensional arrays.  Numarray is modeled after
Numeric and features c-code generated from python template scripts,
the capacity to operate directly on arrays in files, and improved type


1. User added ufuncs

There's a file in numarray-1.0/Examples/ufunc which
demonstrates how a numarray user can define their own universal
functions of one or two parameters.  Ever wanted to write your own
bessel() function for use on arrays?  Now you can.  Your ufunc can use
exactly the same machinery as add().

2. Ports of Numeric functions

A bunch of Numeric functions were ported to numarray in the new
libnumeric module.  To get these import from numarray.numeric.  Most
notable among these are put, putmask, take, argmin, and argmax.  Also
added were sort, argsort, concatenate, repeat and resize.  These are
independent ports/implementations in C done for the purpose of best
Numeric compatibility and small array performance.  The numarray
versions, which handle additional cases, still exist and are the
default in numarray proper.

3. Faster matrix multiply

The setup for numarray's matrix multiply was moved into C-code.  This
makes it faster for small matrices.

4. The numarray "header PEP"

A PEP has been started for the inclusion of numarray (and possibly
Numeric) C headers into the Python core.  The PEP will demonstrate how
to provide optional support for arrays (the end-user may or may not
have numarray installed and the extension will still work).  It may
also (eventually) demonstrate how to build extensions which support
both numarray and Numeric.  Thus, the PEP is seeking to make it
possible to distribute extensions which will still compile when
numarray (or either) is not present in a user's Python installation,
which will work when numarry (or either) is not installed, and which
will improve performance when either is installed.  The PEP is now in
numarray-1.0/Doc/header_pep.txt in docutils format.  We want feedback
and consensus before we submit to python-dev so please consider
reading it and commenting.

For the PEP, the C-API has been partitioned into two parts: a
relatively simple Numeric compatible part and the numarray native
part.  This broke source and binary compatibility with numarray-0.9.
See CAUTIONS below for more information.

5. Changes to the manual

There are now brief sections on numarray.mlab and numarray.objects in
the manual.  The discussion of the C-API has been updated.


1. The numarray-1.0 C-API is neither completely source level nor
binary compatible with numarray-0.9. First, this means that some 3rd
party extensions will no longer compile without errors.  Second, this
means that binary packages built against numarray-0.9 will fail,
probably disastrously, using numarray-1.0.  Don't install numarray-1.0
until you are ready to recompile or replace your extensions with
numarray-1.0 binaries because 0.9 binaries will not work.

In order to support the header PEP, the numarray C-API was partitioned
into two parts: Numeric compatible and numarry extensions. You can use
the Numeric compatible API (the PyArray_* functions) by including
arrayobject.h and calling import_array() in your module init function.
You can use the extended API (the NA_* functions) by including
libnumarray.h and calling import_libnumarray() in your init function.
Because of the partitioning, all numarray extensions must be
recompiled to work with 1.0.  Extensions using *both* APIs must
include both files in order to compile, and must do both imports in
order to run.  Both APIs share a common PyArrayObject struct.

2. numarray extension writers should note that the documented use of
PyArray_INCREF and PyArray_XDECREF (in numarray) was found to be
incompatible with Numeric and these functions have therefore been
removed from the supported API and will now result in errors.

3. The numarray.objects.ObjectArray parameter order was changed.

4. The undocumented API function PyArray_DescrFromTypeObj was removed
from the Numeric compatible API because it is not provided by Numeric.


for more details.

979834  convolve2d parameter order issues
979775  ObjectArray parameter order
979712  No exception for invalid axis
979702  too many slices fails silently
979123  A[n:n] = x no longer works
979028  matrixmultiply precision
976951  Unpickled numarray types unsable?
977472  CharArray concatenate
970356  bug in accumulate contiguity status
969162  object array bug/ambiguity
963921  bitwise_not over Bool type fails
963706  _reduce_out: problem with otype
942804  numarray C-API include file
932438  suggest moving mlab up a level
932436  mlab docs missing
857628  numarray allclose returns int
839401  Argmax's behavior has changed for ties
817348  a+=1j # Not converted to complex
957089  PyArray_FromObject dim check broken
923046  numarray.objects incompatibility  
897854  Type conflict when embedding on OS X  
793421  PyArray_INCREF / PyArray_XDECREF deprecated
735479  Build failure on Cygwin 1.3.22 (very current install).
870660  Numarray: CFLAGS build problem  
874198  numarray.random_array.random() broken?
874207  not-so random numbers in numarray.random_array
829662  Downcast from Float64 to UInt8 anomaly
867073  numarray diagonal bug?  
806705  a tale of two rank-0's
863155  Zero size numarray breaks for loop
922157  argmax returns integer in some cases
934514  suggest nelements -> size
953294  choose bug
955314  strings.num2char bug?
955336  searchsorted has strange behaviour
955409  MaskedArray problems
953567  Add read-write requirement to NA_InputArray
952705  records striding for > 1D arrays
944690  many numarray array methods not documented
915015  numarray/Numeric incompatabilities
949358  UsesOpPriority unexpected behavior
944678  incorrect help for "size" func/method
888430  NA_NewArray() creates array with wrong endianess
922798  The document Announce.txt is out of date
947080  numarray.image.median bugs
922796  Manual has some dated MA info
931384  What does True mean in a mask?
931379 called MA in manual
933842  Bool arrays don't allow bool assignment
935588  problem parsing argument "nbyte" in callStrideConvCFunc()
936162  problem parsing "nbytes" argument in copyToString()
937680  Error in Lib/ ?
936539  array([cmplx_array, int_array]) fails
936541  a[...,1] += 0 crashes interpreter.
940826  Ufunct operator don't work
935882  take for character arrays?
933783  numarray, _ufuncmodule.c: problem setting buffersize
930014  fromstring typecode param still broken
929841  searchsorted type coercion
924841  numarray.objects rank-0 results
925253  numarray.objects __str__ and __repr__
913782  Minor error in chapter 12: NUM_ or not?
889591  wrong header file for C extensions
925073  API manual comments
924854  take() errors
925754  arange() with large argument crashes interpreter
926246  ufunc reduction crash
902153  can't compile under RH9/gcc 3.2.2
916876  searchsorted/histogram broken in versions 0.8 and 0.9
920470  numarray arange() problem
915736  numarray-0.9: Doc/CHANGES not up to date


Numarray-1.0 windows executable installers, source code, and manual is

Numarray is hosted by Source Forge in the same project which hosts

The web page for Numarray information is at:

Trackers for Numarray Bugs, Feature Requests, Support, and Patches are
at the Source Forge project for NumPy at:


numarray-1.0 requires Python 2.2.2 or greater.  


Numarray was written by Perry Greenfield, Rick White, Todd Miller, JC
Hsu, Paul Barrett, Phil Hodge at the Space Telescope Science
Institute.  We'd like to acknowledge the assitance of Francesc Alted,
Paul Dubois, Sebastian Haase, Tim Hochberg, Nadav Horesh, Edward
C. Jones, Eric Jones, Jochen K"upper, Travis Oliphant, Pearu Peterson,
Peter Verveer, Colin Williams, and everyone else who has contributed
with comments, bug reports, or patches.

Numarray is made available under a BSD-style License.  See
LICENSE.txt in the source distribution for details.

Todd Miller