如果我有一个多维 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。
2 回答

POPMUISE
TA贡献1765条经验 获得超5个赞
正如您链接的一维答案一样,您可以在二维中优雅地执行此操作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])

烙印99
TA贡献1829条经验 获得超13个赞
改编自 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]第三次迭代中。
添加回答
举报
0/150
提交
取消