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