Tuple as index of multidimensional array
Since you're using numpy
:
big_array[tup+(3,2)]
should work. When you call __getitem__
(via the square brackets), the stuff is passed to __getitem__
as a tuple. You just need to construct the tuple
explicitly here (adding tuples together concatenates into a new tuple) and numpy
will do what you want.
You can also pass in your first tuple alone to get the slice of interest, then index it seprately:
from numpy.random import randbig_array=rand(3,3,4,5)chosen_slice = (2,2)>>> big_array[ chosen_slice ]array([[ 0.96281602, 0.38296561, 0.59362615, 0.74032818, 0.88169483], [ 0.54893771, 0.33640089, 0.53352849, 0.75534718, 0.38815883], [ 0.85247424, 0.9441886 , 0.74682007, 0.87371017, 0.68644639], [ 0.52858188, 0.74717948, 0.76120181, 0.08314177, 0.99557654]])>>> chosen_part = (1,1)>>> big_array[ chosen_slice ][ chosen_part ]0.33640088565877657
That may be slightly more readable for some users, but otherwise I'd lean towards mgilson's solution.