From: Travis O. <oli...@ee...> - 2006-08-03 20:37:44
|
Sebastian Haase wrote: >On Wednesday 02 August 2006 22:43, Travis Oliphant wrote: >>Sebastian Haase wrote: >>>Thanks, >>>I just found >>>numpy.isscalar() and numpy.issctype() ? >>>These sound like they would do what I need - what is the difference >>>between the two ? >> >>Oh, yeah. >> >>numpy.issctype works with type objects >>numpy.isscalar works with instances >> >>Neither of them distinguish between scalars and "numbers." >> >>If you get errors with isscalar it would be nice to know what they are. > >I'm still trying to reproduce the exception, but here is a first comparison >that - honestly - does not make much sense to me: >(type vs. instance seems to get mostly the same results and why is there a >difference with a string ('12') ) These routines are a little buggy. I've cleaned them up in SVN to reflect what they should do. When the dtype object came into existence a lot of what the scalar types where being used for was no longer needed. Some of these functions weren't updated to deal with the dtype objects correctly either. This is what you get now: >>> import numpy as N >>> N.isscalar(12) True >>> N.issctype(12) False >>> N.isscalar('12') True >>> N.issctype('12') False >>> N.isscalar(N.array([1])) False >>> N.issctype(N.array([1])) False >>> N.isscalar(N.array([1]).dtype) False >>> N.issctype(N.array([1]).dtype) True >>> N.isscalar(N.array([1])[0].dtype) False >>> N.issctype(N.array([1])[0].dtype) True >>> N.isscalar(N.array([1])[0]) True >>> N.issctype(N.array([1])[0]) False -Travis >>>>N.isscalar(12) > >True > >>>>N.issctype(12) > >True > >>>>N.isscalar('12') > >True > >>>>N.issctype('12') > >False > >>>>N.isscalar(N.array([1])) > >False > >>>>N.issctype(N.array([1])) > >True > >>>>N.isscalar(N.array([1]).dtype) > >False > >>>>N.issctype(N.array([1]).dtype) > >False > > # apparently new 'scalars' have a dtype attribute ! > >>>>N.isscalar(N.array([1])[0].dtype) > >False > >>>>N.issctype(N.array([1])[0].dtype) > >False > >>>>N.isscalar(N.array([1])[0]) > >True > >>>>N.issctype(N.array([1])[0]) > >True > >-Sebastian |
From: Mathew Y. <my...@jp...> - 2006-08-03 23:28:38
|
Here is a similar problem I wish could be fixed. In scipy.io.mio is savemat with the line if type(var) != ArrayType which, I believe should be changed to if not isinstance(var,ArrayType): so I can use savemat with memory mapped arrays. Mathew Travis Oliphant wrote: > Sebastian Haase wrote: > >> On Wednesday 02 August 2006 22:43, Travis Oliphant wrote: >> >>> Sebastian Haase wrote: >>> >>>> Thanks, >>>> I just found >>>> numpy.isscalar() and numpy.issctype() ? >>>> These sound like they would do what I need - what is the difference >>>> between the two ? >>>> >>> Oh, yeah. >>> >>> numpy.issctype works with type objects >>> numpy.isscalar works with instances >>> >>> Neither of them distinguish between scalars and "numbers." >>> >>> If you get errors with isscalar it would be nice to know what they are. >>> >> I'm still trying to reproduce the exception, but here is a first comparison >> that - honestly - does not make much sense to me: >> (type vs. instance seems to get mostly the same results and why is there a >> difference with a string ('12') ) >> > > These routines are a little buggy. I've cleaned them up in SVN to > reflect what they should do. When the dtype object came into > existence a lot of what the scalar types where being used for was no > longer needed. Some of these functions weren't updated to deal with > the dtype objects correctly either. > > This is what you get now: > >>> import numpy as N > >>> N.isscalar(12) > > True > > >>> N.issctype(12) > > False > > >>> N.isscalar('12') > > True > > >>> N.issctype('12') > > False > > >>> N.isscalar(N.array([1])) > > False > > >>> N.issctype(N.array([1])) > > False > > >>> N.isscalar(N.array([1]).dtype) > > False > > >>> N.issctype(N.array([1]).dtype) > > True > > >>> N.isscalar(N.array([1])[0].dtype) > > False > > >>> N.issctype(N.array([1])[0].dtype) > > True > > >>> N.isscalar(N.array([1])[0]) > > True > > >>> N.issctype(N.array([1])[0]) > > False > > > -Travis > > >>>>> N.isscalar(12) >>>>> >> True >> >> >>>>> N.issctype(12) >>>>> >> True >> >> >>>>> N.isscalar('12') >>>>> >> True >> >> >>>>> N.issctype('12') >>>>> >> False >> >> >>>>> N.isscalar(N.array([1])) >>>>> >> False >> >> >>>>> N.issctype(N.array([1])) >>>>> >> True >> >> >>>>> N.isscalar(N.array([1]).dtype) >>>>> >> False >> >> >>>>> N.issctype(N.array([1]).dtype) >>>>> >> False >> >> # apparently new 'scalars' have a dtype attribute ! >> >> >>>>> N.isscalar(N.array([1])[0].dtype) >>>>> >> False >> >> >>>>> N.issctype(N.array([1])[0].dtype) >>>>> >> False >> >> >>>>> N.isscalar(N.array([1])[0]) >>>>> >> True >> >> >>>>> N.issctype(N.array([1])[0]) >>>>> >> True >> >> -Sebastian >> > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys -- and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Numpy-discussion mailing list > Num...@li... > https://lists.sourceforge.net/lists/listinfo/numpy-discussion > > |