How to dynamically access Numeric subarrays
Tim Hochberg
tim.hochberg at ieee.org
Wed Aug 4 10:13:24 EDT 2004
Gaubitzer Erwin wrote:
> Hi again
>
>
> For example I have an array AR whose shape is
> (2, 1, 2, 1, 100, 3).
> and I want to access
> AR[0,0,0,0,:,1]
> which results in an rank 1 array with my wanted
> numbers (more advanced I want to loop through another
> index).
>
> I can write it manually but I can't insert this
> list of indices automatically, because the slice
> notation gives me an error when given to a python list.
I believe you want something like:
>>> index = (0,0,0,0,slice(None,None),1)
>>> AR[index]
The args to slice will vary depending on exactly what you want to do.
slice can take up to three arguments for start, stop, step.
Since you seem to be delving deeply into the mysteries of numeric
slicing, it may eventually help you to know that '...' is spelled
Ellipsis if you want to use it in a tuple as above.
Actually, the little class below will probably help you more than
anything that I can write:
class IndexInspector:
def __getitem__(self, key):
return key
Used like:
II = IndexInspector()
print II[0,0,0,0,:,1]
print II[...,0,0,:,1]
prints:
(0, 0, 0, 0, slice(None, None, None), 1)
(Ellipsis, 0, 0, slice(None, None, None), 1)
Regards,
-tim
>
> I tried to use take() but in my 6-dimensional array
> I wasn't able to find the right parameter combination
> to access the vector above.
> Maybe one can give me the right notation.
>
> Thanks again
>
> Erwin
More information about the Python-list
mailing list