У меня такая структура данных:

Pl = np.zeros((7,2,7))
Pl[0,0,1]=1
Pl[1,0,2]=1
Pl[2,0,3]=1
Pl[5,0,6]=0.9
Pl[5,0,5]=0.1
...
Pl[5,1,4]=1

Как я могу получить запись с указанным первым значением, которое имеет наибольшее назначенное значение?

Например, для x = 5 я хочу получить Pl [5,1,4]. Я видел максимум, но я не могу указать значение х.

Спасибо!

1
Diogo Redin 5 Дек 2018 в 04:12

1 ответ

Лучший ответ
import numpy as np

Pl = np.zeros((7, 2, 7))
Pl[0, 0, 1] = 1
Pl[1, 0, 2] = 1
Pl[2, 0, 3] = 1
Pl[5, 0, 6] = 0.9
Pl[5, 0, 5] = 0.1
Pl[5, 1, 4] = 1

res = np.array([5, *np.unravel_index(Pl[5].argmax(), Pl[5].shape)])
# array([5, 1, 4])

Здесь Pl[5].argmax() получает максимальное значение. Это будет одномерный целочисленный индекс, но вы можете преобразовать его в двумерный индекс Pl [5] с помощью np.unravel_index. Наконец, нам не хватает индекса по нулевому измерению, которое, как мы знаем, является 5. Просто добавьте его и верните массив.

0
hilberts_drinking_problem 5 Дек 2018 в 02:08