访问numpy数组中的多个(行,列)组合

时间:2014-02-05 14:19:43

标签: python arrays numpy

我刚刚开始使用numpy,无法找到解决此问题的简单方法。

简单示例:

import numpy as np

A = np.array([[1, 2], [-1, 5], [0, 12]])
x1 = (0, 0)
x2 = (1, 1)
x3 = (2, 0)
A[x1]  # 1
A[x2]  # 5
A[x3]  # 0

我想以某种方式将我的元组x1,x2,x3放入一个对象中,然后我将其用于索引到A.我希望这返回[1,5,0] - 因此title,访问numpy数组中的多个(行,列)组合。有一个简单的方法吗?

这是我尝试过的:

A[[x1, x2, x3]]  # IndexError
A[(x1, x2, x3)]  # IndexError
A[x1, x2, x3]  # IndexError
A[np.array((x1, x2, x3))]  # Not what I'm trying to do

一种可能性是:

tuples = (x1, x2, x3)
elems = []
for tup in tuples:
    elems.append(A[tup])

B = np.array(elems)
B  # [1, 5, 0] as desired

但有没有办法避免循环?

1 个答案:

答案 0 :(得分:3)

In [1357]: A[zip(x1,x2,x3)]
Out[1357]: array([1, 5, 0])