如果我有一个多维 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。
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])
改编自 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]
。