将元组/数组/列表解包为Numpy数组的索引
我希望能够做到
>>> A = numpy.array(((1,2),(3,4)))
>>> idx = (0,0)
>>> A[*idx]
然后得到
1
但是这样写是不符合语法规则的。有办法做到这一点,而不需要明确写出
>>> A[idx[0], idx[1]]
吗?
补充说明:谢谢大家的回复。在我的程序中,我用的是Numpy数组来索引,而不是元组,所以得到了奇怪的结果。按照Alok的建议,把它转换成元组就解决了这个问题。
4 个回答
6
不需要拆包——当你在 [
和 ]
之间有一个逗号时,你实际上是在创建一个元组,而不是在传递参数。foo[bar, baz]
和 foo[(bar, baz)]
是一样的。所以如果你有一个元组 t = bar, baz
,你只需要写 foo[t]
。
22
试试这个
A[tuple(idx)]
除非你有更复杂的情况,不像这个例子那么简单,否则上面的代码应该适用于所有数组。
26
其实比你想的要简单:
>>> import numpy
>>> A = numpy.array(((1,2),(3,4)))
>>> idx = (0,0)
>>> A[idx]
1