Как получить индекс минимального значения всех значений max_values, вырезанных из другого списка, используя numpy - PullRequest
0 голосов

У меня есть два массива

B = [[250, 100], [200, 120], [150, 150], [150, 80], [100, 150], [150, 250]]
A = [[1, 1], [1, 0.5], [0.5, 0.5], [0.5, 1], [0.8, 0.3], [0.5, 0.9]]

Первый шаг - получить элементы со всеми значениями max [0] в массиве A и их индексами

a0 = [[1, 1], [1, 0.5]]
max_a_index_0 = [0, 1]

, затем мы получим элементы из Bмассив по индексам полученных максимальных значений

b0 = [[250, 100], [200,120]]

после этого мы выбираем элемент с минимальным значением и получаем его индекс из исходного массива B.

max_b0_index_0 = 1

Тот же процесс с [1]элементы:

b1 = [[250, 100], [150, 80]]
a1 = [[1, 1], [0.5, 1]]
max_a_index_1 = [0, 3]
max_b0_index_1 = 3

Обновление: вот мой код.Есть ли лучший способ сделать такие расчеты?

for n in range(2):
    a_max_0 = np.argwhere(np.array(A)[:,n] == np.amax(np.array(A)[:,n])).flatten().tolist()
    b_a_max_0 = [B[i] for i in range(len(A)) if i in a_max_0]
    b_min_0 = np.argwhere(np.array(b_a_max_0)[:,n] == np.amin(np.array(b_a_max_0)[:,n])).flatten().tolist()
    a_b_max_min_index = [a_max_0[i] for i in range(len(a_max_0)) if i in b_min_0]
    print(a_b_max_min_index)
...