[SciPy-dev] scipy choice of defaults for matrix manipulation

Alan G Isaac aisaac at american.edu
Wed Aug 4 11:14:27 EDT 2004


The SciPy documentation says:
        To begin with, all of the Numeric functions have
        been subsumed into the scipy namespace so that all
        of those functions are available without
        additionally importing Numeric.

It was therefore unsettling to find that SciPy's function_base defines
def cumsum(m,axis=-1):
    """Returns the cumulative sum of the elements along the given axis
    """
    if axis is None:
        m = ravel(m)
        axis = 0
    else:
        m = _asarray1d(m)
    return add.accumulate(m,axis)

This changes the default axis of Numeric and numarray.
Bug or feature??

Example:
>>> x=[[1,2],[3,4]]
>>> from scipy import *
>>> print cumsum(x)
[[1,3]
 [3,7]]
>>> print Numeric.cumsum(x)
[[1,2]
 [4,6]]

I believe this should be considered a serious bug, either in
implementation or documentation.  Since SciPy is likely to be
attracting Numeric and numarray users, I believe it should
be considered an implementation bug.  Naturally cumprod has
the same problem.  (I did not try to review the whole list,
so there may be others.)

There is even a certain schizophrenia: sum and prod choose
different axes!  It is clear that this has been thought
about at some point, since SciPy's sum definition includes
a note suggesting that the axis might change in the future
(to *conflict* with the choice in Numeric and numarray!!).

This is likely to generate great user confusion.  It cost
me some time.

Thank you,
Alan Isaac






More information about the SciPy-Dev mailing list