如何使用广播从具有列表 2d 索引的 2D numpy 数组中获取元素?

dra*_*bob 5 numpy python-2.7 array-broadcasting

如果我有一个 2D numpy 数组,我想使用行、列索引对列表来提取元素。

xy = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
idx = np.array([[0, 0], [1, 1], [2, 2]])
Run Code Online (Sandbox Code Playgroud)

for循环解决方案:

elements = list()
for i in idx:
    elements.append(xy[idx[i][0], xy[idx[i][1])
Run Code Online (Sandbox Code Playgroud)

输出:

print(elements)
>> [1, 5, 9]
Run Code Online (Sandbox Code Playgroud)

如果 idx 是元组列表,我找到了解决方案,但我希望找到一个不需要先将 idx 转换为元组的解决方案。

Da *_* Qi 2

    idy = zip(*idx)
    output = xy[idy]
Run Code Online (Sandbox Code Playgroud)