[Numpy-discussion] determinant of a scalar not handled
Mon Jul 26 19:22:06 CDT 2010
On Mon, Jul 26, 2010 at 4:18 PM, Skipper Seabold <email@example.com> wrote:
> On Mon, Jul 26, 2010 at 7:38 PM, Charles R Harris
> <firstname.lastname@example.org> wrote:
>> On Mon, Jul 26, 2010 at 5:05 PM, Skipper Seabold <email@example.com>
>>> On Mon, Jul 26, 2010 at 5:48 PM, Alan G Isaac <firstname.lastname@example.org> wrote:
>>> > On 7/26/2010 12:45 PM, Skipper Seabold wrote:
>>> >> Right now np.linalg.det does not handle scalars or 1d (scalar) arrays.
>>> > I don't have a real opinion on changing this, but I am curious
>>> > to know the use case, as the current behavior seems
>>> Use case is just so that I can have less atleast_2d's in my code,
>>> since checks are done in linalg.det anyway.
>>> > a) correct and b) to provide an error check.
>>> Isn't the determinant defined for a scalar b such that det(b) ==
>>> det([b]) == det([[b]])?
>> Well, no ;) Matrices have determinants, scalars don't. Where are you
>> running into a problem? Is something returning a scalar where a square array
>> would be more appropriate?
> No, linalg.det always returns a scalar, and I, of course, could be
> more careful and always ensure that whatever the user supplies it
> becomes a 2d array, but I don't like putting atleast_2d everywhere if
> I don't need to. I thought that the determinant of a scalar was by
> definition a scalar (e.g, google "determinant of a scalar is"), hence
> which should either fail or if not, then I think np.linalg.det should
> handle scalars and scalars as 1d arrays.
> So instead of me having to do
> b = np.array()
> b = np.atleast_2d(b)
> I could just do
> b = np.array()
> Regardless, doing asarray, checking if something is 2d, and then
> checking if its square seems redundant and could be replaced by an
> atleast_2d in linalg.slogdet which 1) takes a view as an array, 2)
> ensures that the we have a 2d array, and 3) handles the scalar case.
> Then we check if it's square. It doesn't really change much except
> keeping me from having to put atleast_2d's in my code.
> NumPy-Discussion mailing list
imo, the determinant of a scalar should be defined as itself, based on
the definition of the determinant. I don't have a vested interest in
linalg's behavior in this respect, though.
More information about the NumPy-Discussion