[Numpy-discussion] numarray bug: sum, product, alltrue, sometrue

Huaiyu Zhu huaiyu_zhu at yahoo.com
Mon Sep 16 23:40:05 EDT 2002


There is a bug in the dimension-reducing functions (sum, product,
alltrue, sometrue) in numarray: The outside swapaxes should take into
account that one axis is reduced.  The expected behavior should be:

>>> from numarray import *
>>> a = ones((2,3,4))
>>> sum(a, axis=0).shape
(3, 4)
>>> sum(a, axis=1).shape
(2, 4)
>>> sum(a, axis=2).shape
(2, 3)

A patch is attached below.

Huaiyu

*** numarray.py~	Tue Jul  2 11:12:24 2002
--- numarray.py	Mon Sep 16 23:17:27 2002
***************
*** 995,997 ****
      else:
!         return swapaxes(ufunc.add.reduce(swapaxes(a, 0, axis)), 0, axis)
  
--- 995,997 ----
      else:
!         return swapaxes(ufunc.add.reduce(swapaxes(a, 0, axis)), 0, axis-1)
  
***************
*** 1014,1016 ****
          return swapaxes(ufunc.multiply.reduce(swapaxes(a, 0, axis)),
!                         0, axis)
  
--- 1014,1016 ----
          return swapaxes(ufunc.multiply.reduce(swapaxes(a, 0, axis)),
!                         0, axis-1)
  
***************
*** 1034,1036 ****
          return swapaxes(ufunc.logical_and.reduce(swapaxes(a, 0, axis)),
!                         0, axis)
  def sometrue(a, axis=0):
--- 1034,1036 ----
          return swapaxes(ufunc.logical_and.reduce(swapaxes(a, 0, axis)),
!                         0, axis-1)
  def sometrue(a, axis=0):
***************
*** 1043,1045 ****
          return swapaxes(ufunc.logical_or.reduce(swapaxes(a, 0, axis)),
!                         0, axis)
  
--- 1043,1045 ----
          return swapaxes(ufunc.logical_or.reduce(swapaxes(a, 0, axis)),
!                         0, axis-1)
  






More information about the NumPy-Discussion mailing list