I would love to be able to do
>>> A = numpy.array(((1,2),(3,4))) >>> idx = (0,0) >>> A[*idx]
however this is not valid syntax. Is there a way of doing this without explicitly writing out
>>> A[idx, idx]
EDIT: Thanks for the replies. In my program I was indexing with a Numpy array rather than a tuple and getting strange results. Converting to a tuple as Alok suggests does the trick.
Unless you have a more complex use case that’s not as simple as this example, the above should work for all arrays.
Indexing an object calls:
When you do A[1, 2], it’s the equivalent of:
So when you do:
b = (1, 2) A[1, 2] == A[b] A[1, 2] == A[(1, 2)]
Both statements will evaluate to True.
If you happen to index with a list, it might not index the same, as [1, 2] != (1, 2)
No unpacking is necessary—when you have a comma between
], you are making a tuple, not passing arguments.
foo[bar, baz] is equivalent to
foo[(bar, baz)]. So if you have a tuple
t = bar, baz you would simply say
It’s easier than you think:
>>> import numpy >>> A = numpy.array(((1,2),(3,4))) >>> idx = (0,0) >>> A[idx] 1