[Numpy-discussion] not expected output of fill_diagonal

Frédéric Bastien nouiz at nouiz.org
Fri Jun 8 20:45:17 EDT 2012


Hi,

While reviewing the Theano op that wrap numpy.fill_diagonal, we found
an unexpected behavior of it:

# as expected for square matrix
>>> a=numpy.zeros((5,5))
>>> numpy.fill_diagonal(a, 10)
>>> print a

# as expected long rectangular matrix
>>> a=numpy.zeros((3,5))
>>> numpy.fill_diagonal(a, 10)
>>> print a
[[ 10.   0.   0.   0.   0.]
 [  0.  10.   0.   0.   0.]
 [  0.   0.  10.   0.   0.]]

# Not as expected
>>> a=numpy.zeros((5,3))
>>> numpy.fill_diagonal(a, 10)
>>> print a
[[ 10.   0.   0.]
 [  0.  10.   0.]
 [  0.   0.  10.]
 [  0.   0.   0.]
 [ 10.   0.   0.]]


I can make a PR that will add a parameter wrap that allow to control
if it return the old behavior or what I would expect in the last case:
[[ 10.   0.   0.]
 [  0.  10.   0.]
 [  0.   0.  10.]
 [  0.   0.   0.]
 [  0.   0.   0.]]

My questions is, do someone else expect the current behavior? Should
we change the default to be what I expect? Do you want that we warn if
the user didn't specify witch behavior and in the future we change it?

Anything else I didn't think?

thanks

Fred



More information about the NumPy-Discussion mailing list