Cannot store Sequences in Numeric arrays of Objects

Konrad Hinsen hinsen at cnrs-orleans.fr
Mon Jun 7 04:43:35 EDT 1999


Stuart I Reynolds <S.I.Reynolds at cs.bham.ac.uk> writes:

> >>>#Cannot store an array
> >>> a[0,0] = b
> Traceback (innermost last):
>   File "<stdin>", line 1, in ?
> ValueError: array too large for destination

NumPy handles assignments from sequences to arrays correctly in the
"standard" cases, but unfortunately this makes it difficult to assign
sequences to individual elements of general object arrays (which
aren't that well supported anyway).

However, you can assign sequences to elements of one-dimensional arrays:

>>> from Numeric import *
>>> a = zeros((5,), PyObject)
>>> a[0] = [1, 2, 3]
>>> a[1] = ['a', ['b', 'c']]
>>> a
array([[1, 2, 3] , ['a', ['b', 'c']] , 0 , 0 ,
            0 ],'O')
>>> a[2:4] = ['foo', 'bar']
>>> a[4] = array(3*[None], PyObject)
>>> a
array([[1, 2, 3] , ['a', ['b', 'c']] , foo ,
            bar , [None  None  None ] ],'O')

In your case, a[0][0] = b will do what you want. I don't know why
assignment to higher-dimensional arrays fails, but I don't really want
to figure it out either!
-- 
-------------------------------------------------------------------------------
Konrad Hinsen                            | E-Mail: hinsen at cnrs-orleans.fr
Centre de Biophysique Moleculaire (CNRS) | Tel.: +33-2.38.25.55.69
Rue Charles Sadron                       | Fax:  +33-2.38.63.15.17
45071 Orleans Cedex 2                    | Deutsch/Esperanto/English/
France                                   | Nederlands/Francais
-------------------------------------------------------------------------------




More information about the Python-list mailing list