[Numpy-discussion] how to create an array of objects that are sequences?
Robert Kern
robert.kern at gmail.com
Sun Jan 6 03:22:02 EST 2008
Christopher Barker wrote:
> Robert Kern wrote:
>> Chris Barker wrote:
>>> What if your "objects" were nested sequences, and you wanted to partly
>>> flatten them -- which would you flatten?
>> I'm pretty sure that that is exactly the ambiguity that the depth option
>> resolves. Can you give me an example where it's still ambiguous with the depth
>> information provided?
>
> I was imagining:
>
> Say you have a bunch of nested sequences that, fully expanded, would
> yield a (i,j,k) rank-3 array. If you wanted a rank-2 array, you could
> have either:
> a (i,j) array with each element being a length-k sequence
> or:
> a (i,k) array, with each element being a length-j sequence.
>
> This is quite trivial with numpy n-d arrays.
>
> However, while you could build either of those from nested sequences,
> there isn't, in fact, and object in there that is that length-j sequence.
And I think that's the key difference. I don't think array() should be
responsible for *arbitrarily* flattening nested sequences in order to
reinterpret structure. Instead, I think we really only need array() to be able
to answer the question, "is this object an atom or a sequence I need to descend
into?" Essentially, for all valid index-tuples (say, [i,j,k]) in the array:
arr[i,j,k] == original[i,j,k]
> I guess this really points to the power of n-d arrays!
Yes. Since one can get the (i,k) array after getting the (i,j,k) array and
reshaping, I don't think we need to support it in array().
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the NumPy-Discussion
mailing list