Python:如何获取多维数组在某些索引位置的值?

问题描述 投票:0回答:2

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

a = np.array([[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。

python arrays numpy indexing
2个回答
1
投票

正如您链接的一维答案一样,您可以使用

numpy
:

在二维中优雅地完成此操作
a = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
rows, columns = zip([0, 0], [1, 1], [2, 2])
print(a[rows, columns])

print
的输出将是:

array([0, 4, 8])

1
投票

改编自 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]

其工作原理是使用 foreach 循环,迭代索引数组中的每一对,然后将每个给定索引处的值添加到最终结果中。

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

© www.soinside.com 2019 - 2024. All rights reserved.