如果我有一個(gè)多維 numpy 數(shù)組,例如:a = [[0 1 2] [3 4 5] [6 7 8]]如何一步獲得某些索引位置的值?例如,如果要定義成對的索引,例如:indices = [[0,0], [1,1], [2,2]]我想:a[indices] = [0, 4, 8]請注意,這確實(shí)適用于一維數(shù)組(Python:如何在某些索引位置獲取數(shù)組的值?),但我看不到如何讓它在多個(gè)維度上工作。我正在使用 Python 3.7。
2 回答
POPMUISE
TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
正如您鏈接的一維答案一樣,您可以在二維中優(yōu)雅地執(zhí)行此操作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貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
改編自 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 循環(huán),遍歷索引數(shù)組中的每一對,然后將每個(gè)給定索引處的值添加到最終結(jié)果中來工作。
pair是索引數(shù)組中的每一對,并表示 中的每一索引對indices。在您的示例中,它將[0,0]在第一次迭代、[1,1]第二次和[2,2]第三次迭代中。
添加回答
舉報(bào)
0/150
提交
取消
