From: Konrad H. <hi...@cn...> - 2002-09-15 19:40:56
|
> > And it should fail, because a rank-0 array is not a sequence, so it > > doesn't have a length. > > I disagree. You should not have to write special code to check for a > specific case. It breaks one of the beauties of Numeric -- i.e. you can It is not a specific case, more like a specific value (for the rank). 1/a fails for a == 0, should that be changed as well? Let's examine some equivalent code pieces: - len(a) == a.shape[0] the second fails for rank 0, so the first one should fail as well - for i in range(len(a)): print a[i] works for all sequences. If len(a) doesn't fail (and I assume it would then return 1), a[1] shouldn't fail either. - len(a) == len(list(a)) for all sequences a. Should list(a) return [a] for a rank-0 array? For a scalar it fails. Actually this might be an argument for not having rank-0 arrays at all. Arrays are multidimensional sequences, but rank-0 arrays aren't. > returns its length along its "first" axis. This will always be 1. It > allows for generic code. Then please give an example where this genericity would be useful. > On this note: > I do not see the benefit of making a scalar type object that is separate > for 0d arrays. It seems to remove instead of enhance capabilities. > What does a scalar object buy that simply using 0d arrays for that > purpose does not? Compatibility, for example the ability to index a sequence with an element of an integer array. Also consistency with other Python sequence types. For example, [a][0] == a so one would expect also array([a])[0] == a but this would not be fully true if the left-hand side is a rank-0 array. 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 ------------------------------------------------------------------------------- |