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

Pearu Peterson pearu at cens.ioc.ee
Fri Jan 4 14:24:31 EST 2008


Just ignore this solution. It was not quite working
and I was able to get a segfault from it.

Pearu

On Fri, January 4, 2008 8:58 pm, Pearu Peterson wrote:
> On Fri, January 4, 2008 8:00 pm, Pearu Peterson wrote:
>> 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.
>
>>> 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))
>>
>> 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.
>
> Ok, I found a partial solution:
>
>
> class A(tuple):
>    def __repr__(self):
>      return 'A(%s)' % (tuple.__repr__(self))
>     @property
>     def __array_interface__(self):
>         import numpy
>         obj = numpy.empty(1,dtype=object)
>         obj[0] = self
>         return obj.__array_interface__.copy()
>
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion at scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion
>





More information about the NumPy-Discussion mailing list