[SciPy-dev] Nested arrays
Sasha
ndarray at mac.com
Tue Jan 10 12:17:13 CST 2006
In Numeric nested arrays could be indexed using multiple subscripts:
>>> from Numeric import *
>>> x = empty(2,'O')
>>> x[0] = array([1,2])
>>> x[1] = array([1,2,3])
>>> x
array([[1 2] , [1 2 3] ],'O')
>>> x[1][2]
3
This feature is lost in NumPy:
>>> x = empty(2, object)
>>> x[0] = array([1,2])
>>> x[1] = array([1,2,3])
>>> x[1][2]
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: unsubscriptable object
This is quite surprising because x[1] prints as an array
>>> x[1]
array([1, 2, 3])
The problem is that x[1] is in fact a numpy scalar object holding an array:
>>> x[1].size
1
>>> type(x[1])
<type 'object_arrtype'>
I can work around this problem as follows:
>>> x[1].item()[2]
3
but this is quite ugly and requires a lot of changes for the legacy code.
I propose to add ndarray to a list of possible dtypes and not to wrap
ndarrays in object_ instances. There are many other possible solutions
to this problem, but I think that nested
arrays a common enough to deserve special treatment.
-- sasha
More information about the Scipy-dev
mailing list