Numeric slicing, iteration prob.
Duncan Smith
buzzard at urubu.freeserve.co.uk
Mon Aug 5 08:48:45 EDT 2002
Hello,
Does anyone know of a cuter way of iterating over an index rather
than building strings and using eval()? (Example below.) This will get more
awkward when I need to do further slicing. eg. depending on the results
returned I might need to generate t[1,:,3], t[:,1,3] etc.
On a related note, does anyone have a feeling for the most efficient way of
checking if all the values in a returned slice are zero? I can obviously
just iterate over the cells and break when I get a non-zero value, but I'm
hoping there's some more efficient method available in Numeric. TIA.
Cheers.
Duncan
>>> import RandomArray
>>> t = RandomArray.randint(0, 9, [2,3,4])
>>> t
array([[[6, 0, 2, 4],
[4, 6, 6, 2],
[8, 3, 3, 3]],
[[3, 2, 2, 4],
[4, 1, 6, 1],
[1, 6, 0, 4]]])
>>> index = (1,1,3)
>>> for i in range(len(index)):
... s = 't[' + ':,'*i + str(index[i]) + ',...]'
... eval(s)
...
array([[3, 2, 2, 4],
[4, 1, 6, 1],
[1, 6, 0, 4]])
array([[4, 6, 6, 2],
[4, 1, 6, 1]])
array([[4, 2, 3],
[4, 1, 4]])
>>>
More information about the Python-list
mailing list