[Numpy-discussion] how to create an array of objects that are sequences?

Pearu Peterson pearu@cens.ioc...
Fri Jan 4 12:00:47 CST 2008


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



More information about the Numpy-discussion mailing list