I would love to be able to do
>>> A = numpy.array(((1,2),(3,4)))
>>> idx = (0,0)
>>> A[*idx]
and get
1
however this is not valid syntax. Is there a way of doing this without explicitly writing out
>>> A[idx[0], idx[1]]
?
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.
Try
A[tuple(idx)]
Unless you have a more complex use case that's not as simple as this example, the above should work for all arrays.
It's easier than you think:
>>> import numpy
>>> A = numpy.array(((1,2),(3,4)))
>>> idx = (0,0)
>>> A[idx]
1
Indexing an object calls:
object.__getitem__(index)
When you do A[1, 2], it's the equivalent of:
A.__getitem__((1, 2))
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 [
and ]
, 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 foo[t]
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.