Найти максимум по строкам для трехмерной матрицы без l oop? - PullRequest
1 голос
/ 22 марта 2020

У меня есть матрица с формой (2,4,4), и я хочу получить максимум по строкам для каждой матрицы.

w = array([
       [[0.9695303 , 0.99844801, 0.99712014, 0.99493009],
        [0.99111579, 0.99997843, 0.99995245, 0.99998065],
        [0.99940958, 0.99998028, 0.99999291, 0.99996183],
        [0.99701626, 0.99997955, 0.99998736, 0.99998028]],

       [[0.99992947, 0.99999852, 0.99988576, 0.99975061],
        [0.99999059, 1.        , 0.99999982, 0.99999987],
        [0.99999622, 0.99999945, 0.99999837, 0.99999683],
        [0.99998404, 0.99999998, 0.99999842, 0.99999804]]
])

Мой желаемый результат должен быть

[array([0.99844801, 0.99998065, 0.99999291, 0.99998736]),
 array([0.99999852, 1.        , 0.99999945, 0.99999998])]

Наивный способ приведен ниже

max_by_row = []
for matrix in w:
  max_by_row.append(np.max(matrix,axis=1))

print(max_by_row)

Есть ли способ сделать то же самое без петель?

1 Ответ

0 голосов
/ 22 марта 2020

Вы можете использовать список понимания .

max_by_row = [np.max(matrix,axis=1) for matrix in w]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...