Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将元组/数组/列表解压缩为Numpy数组的索引_Python_Numpy - Fatal编程技术网

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的回答说明了我可以直接使用示例元组。这是由于
元组
数组