Python 将元组/数组/列表解压缩为Numpy数组的索引
我希望能够做到Python 将元组/数组/列表解压缩为Numpy数组的索引,python,numpy,Python,Numpy,我希望能够做到 >>> A = numpy.array(((1,2),(3,4))) >>> idx = (0,0) >>> A[*idx] 得到 1 但是,这不是有效的语法。有没有一种方法可以做到这一点而不需要明确地写出来 >>> A[idx[0], idx[1]] ? 编辑:谢谢你的回复。在我的程序中,我使用Numpy数组而不是元组进行索引,得到了奇怪的结果。按照Alok的建议转换为元组就可以了。试试看 A[tup
>>> A = numpy.array(((1,2),(3,4)))
>>> idx = (0,0)
>>> A[*idx]
得到
1
但是,这不是有效的语法。有没有一种方法可以做到这一点而不需要明确地写出来
>>> A[idx[0], idx[1]]
?
编辑:谢谢你的回复。在我的程序中,我使用Numpy数组而不是元组进行索引,得到了奇怪的结果。按照Alok的建议转换为元组就可以了。试试看
A[tuple(idx)]
除非您有一个不像本例那么简单的更复杂的用例,否则以上内容应该适用于所有数组。索引对象调用:
object.__getitem__(index)
当你做[1,2]时,它相当于:
A.__getitem__((1, 2))
所以当你这样做的时候:
b = (1, 2)
A[1, 2] == A[b]
A[1, 2] == A[(1, 2)]
这两个语句的计算结果都为True
如果您碰巧使用列表进行索引,它可能与[1,2]索引不同(1,2)当您在
[
和]
之间有一个逗号时,不需要解包,而是创建元组,而不是传递参数foo[bar,baz]
相当于foo[(bar,baz)]
。因此,如果你有一个元组t=bar,baz
,你只需说foo[t]
这比你想象的要简单:
>>> import numpy
>>> A = numpy.array(((1,2),(3,4)))
>>> idx = (0,0)
>>> A[idx]
1
@迈克:是的,但题目说可能是列表或数组。Pytorch也适用。这是一个艰难的决定。最后,我认为Vicki比你更能利用积分。尽管如此,我还是给了你一个赞成票:-)另外,我想Vicki的回答说明了我可以直接使用示例元组。这是由于
元组
和数组