On Fri, January 4, 2008 7:33 pm, Travis E. Oliphant wrote: > Pearu Peterson wrote: >> Hi, >> >> Say, one defines >> >> class A(tuple): >> def __repr__(self): >> return 'A(%s)' % (tuple.__repr__(self)) >> >> and I'd like to create an array of A instances. > > The array function was designed a long time ago to inspect sequences and > flatten them. > > Arguably, there should be more intelligence when an "object" array is > requested, but there is ambiguity about what the "right" thing to do is. > > Thus, the current situation is that if you are creating object arrays, > the advice is to populate it after the fact. > > So, create an empty object array and insert the entries the way you want > them: > > a = np.empty(1,dtype=object) > a[0] = A((1,2))
Thanks Travis for the hint! The solution is too verbose for an end-user, though. Meantime I was reading arrayobject.c and it seems that before objects are checked for being sequences, their __array_interface__ is accessed (eg in Array_FromSequence, discover_depth). Would this provide a solution if the class A would define a property __array_interface__? I just don't know what the data field should be for an object. Thanks, Pearu _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion