From: Pearu P. <pe...@ce...> - 2002-10-07 12:42:51
|
On Mon, 7 Oct 2002, Andrew P. Lentvorski wrote: > On Mon, 7 Oct 2002, Travis Oliphant wrote: > > > What would you have them do? Their current definition works for returning > > suitable arrays as integers and floats respectively, just as the Python ^^^^^^^^^^^^^^^ > > documentation says these two functions should. > > Okay, now I'm really confused ... > > >>> import Numeric > >>> a = Numeric.array([1.5, 2.5, 3.5], Numeric.Float64) > >>> a > array([ 1.5, 2.5, 3.5]) > >>> int(a) > Traceback (most recent call last): > File "<stdin>", line 1, in ? > TypeError: Only rank-0 arrays can be converted to Python scalars. ^^^^^^^^^^^^^ > I guess I'm really dense, but how does that result constitute a definition > that "works"? See ^^^ above. In this case, suitable arrays are rank-0 arrays. So, the definition works (see also below). > > It would be an easy thing to map int() to oldarray.astype(Int) and so > > forth but is this a good policy. I submit it is not. > > I could be persuaded either way. I was simply wondering what the > arguments were. According to int.__doc__, int(..) should *always* return a Python integer. But you are asking for an integer array as a result of int(array(..)); and that would be a contradiction with the Python definition for int(anyobj). Pearu |