首页 > 解决方案 > Python:如何在某些索引位置获取多维数组的值?

问题描述

如果我有一个多维 numpy 数组,例如:

a = [[0 1 2]
     [3 4 5]
     [6 7 8]]

如何一步获得某些索引位置的值?例如,如果要定义成对的索引,例如:

indices = [[0,0], [1,1], [2,2]]

我想:

a[indices] = [0, 4, 8]

请注意,这确实适用于一维数组(Python:如何在某些索引位置获取数组的值?),但我看不到如何让它在多个维度上工作。我正在使用 Python 3.7。

标签: pythonarraysnumpyindexing

解决方案


改编自 Prasanna 的评论

a = [[0 1 2]
     [3 4 5]
     [6 7 8]]
indices = [[0,0], [1,1], [2,2]]

a[indices] = [a[pair[0]][pair[1]] for pair in indices]

这通过使用 for each 循环,遍历索引数组中的每一对,然后将每个给定索引处的值添加到最终结果中来工作。

pair是索引数组中的每一对,并表示 中的每一索引对indices。在您的示例中,它将[0,0]在第一次迭代、[1,1]第二次和[2,2]第三次迭代中。


推荐阅读