> Does anyone know when this change was introduced and why? Isn't it more a problem of default values ? By default, x.diagonal() == x.diagonal(0,0,1) x.diagonal() array([[ 0, 20], [ 1, 21], [ 2, 22], [ 3, 23]]) If you want the paired diagonal: x.diagonal(0,1,-1) array([[ 0, 5, 10, 15], [16, 21, 26, 31]])