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
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to