From: Konrad H. <hi...@cn...> - 2002-09-13 10:21:38
|
Pearu Peterson <pe...@ce...> writes: > I think it would be confusing if the result of repr would be `2' and not > `array(2)' because 2 and array(2) are not equivalent in all usages > but it should be clear from repr results as a first way to learn more > about the objects. I agree. There will already be some inevitable confusion with both rank-0 arrays and scalars around, with similar but not identical behaviour. Rank-0 arrays shouldn't make it worse by using camouflage. > > The second issue is an efficiency one. Currently numarray uses > > Python objects for arrays. If we return rank-0 arrays for > > single item indexing, then some naive uses of larger arrays > > as sequences may lead to an enormous number of array objects > > to be created. True, there will be equivalent means of doing > > the same operation that won't result in massive object creations > > (such as specifically converting an array to a list, which would > > be done much faster). Is this a serious problem? > > Could array.__getitem_ and __getslice__ detect if their argument is > an array and skip using Python objects when iterating over indices? Of course they know that they are indexing an array, they are defined at the level of the array class/type. However, they cannot detect an iteration as opposed to a single item access. I don't know if this efficiency problem could be important in practice, probably only practice can tell. I have no idea how many single-item indexing operations into arrays occur in my code, this is not something I worried about when writing it. If there will be scalar and rank-0 array returning variants of indexing anyway, then I suppose that changing the index syntax to one or the other is not a big effort. So my suggestion is to make a test release and see what the reactions are. Konrad. -- ------------------------------------------------------------------------------- Konrad Hinsen | E-Mail: hi...@cn... Centre de Biophysique Moleculaire (CNRS) | Tel.: +33-2.38.25.56.24 Rue Charles Sadron | Fax: +33-2.38.63.15.17 45071 Orleans Cedex 2 | Deutsch/Esperanto/English/ France | Nederlands/Francais ------------------------------------------------------------------------------- |