Ответ 1
Метод # 1: используйте None
(или np.newaxis
), чтобы добавить дополнительное измерение, чтобы вести себя в режиме вещания:
>>> e
array([[ 0., 1.],
[ 2., 4.],
[ 1., 5.]])
>>> e/e.sum(axis=1)[:,None]
array([[ 0. , 1. ],
[ 0.33333333, 0.66666667],
[ 0.16666667, 0.83333333]])
Метод # 2: перейдите в режим транспонирования:
>>> (e.T/e.sum(axis=1)).T
array([[ 0. , 1. ],
[ 0.33333333, 0.66666667],
[ 0.16666667, 0.83333333]])
(Вы можете отбросить часть axis=
для краткости, если хотите.)
Метод № 3: (продвигается из комментария Хайме)
Используйте аргумент keepdims
на sum
, чтобы сохранить размер:
>>> e/e.sum(axis=1, keepdims=True)
array([[ 0. , 1. ],
[ 0.33333333, 0.66666667],
[ 0.16666667, 0.83333333]])