如何提取python中两个数组对应的元素

How to extract corresponding elements of two arrays in python

我有两个 3d 数组,

array_1=array([[[4, 6, 6, 8],[4, 5, 8, 5]],
           [[6, 0, 8, 7],[9, 9, 2, 1]],
           [[5, 2, 0, 9],[4, 3, 9, 7]]])
array_2=array([[['d1', 'd8', 'd7', 'd6'],['d1', 'd9', 'd7', 'd3']],
           [['d3', 'd5', 'd5', 'd2'],['d3', 'd4', 'd6', 'd4']],
           [['d4', 'd3', 'd9', 'd6'],['d5', 'd8', 'd1', 'd6']]])

我想得到 array_1 的最大值和 array_2 的相应元素,即;

max_values = array([[6, 6, 6, 9, 5],[9, 9, 9, 7, 9]])
cor_elements = array([['d3', 'd8', 'd5', 'd6'],['d3','d4', 'd1', 'd6']])

我可以通过以下代码获得 array_1 的 max_values 的最大值和索引,

import numpy as np
max_values=array_1.max(axis=0)
max_ind=array_1.argmax(axis=0)

你能帮我看看如何从 array_2 得到 cor_elements 吗?

使用numpy.indices的一种方式:

argmax = array_1.argmax(axis=0)
j, k = np.indices(argmax.shape)
array_2[argmax, j, k]

输出:

array([['d3', 'd8', 'd5', 'd6'],
       ['d3', 'd4', 'd1', 'd6']], dtype='<U2')