Я хотел бы реализовать функциональность numpy.cumsum
одновременно по двум осям в векторизованном виде. Таким образом, значение любой ячейки в выходных данных должно быть суммой всех ячеек выше и слева включительно соответствующей ячейки во входных данных.
Это эквивалентно применению cumsum
последовательно по первой оси, а затем по другой:
>>> X = np.arange(25).reshape(5,5)
>>> X
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
>>> np.cumsum(np.cumsum(X, axis=0),axis=1)
array([[ 0, 1, 3, 6, 10],
[ 5, 12, 21, 32, 45],
[ 15, 33, 54, 78, 105],
[ 30, 64, 102, 144, 190],
[ 50, 105, 165, 230, 300]])
Однако я думаю, что это относительно неэффективный способ сделать это.
Возможна ли векторизация в numpy / Python так, что массив нужно суммировать только один раз?