Краткий способ суммировать выбранные строки массива - PullRequest
1 голос
/ 21 апреля 2019

У меня есть массив 2D numpy L, который я хочу преобразовать в другой массив numpy такой же формы, чтобы каждая строка заменялась суммой всех других строк.Я продемонстрировал это ниже.

Мой вопрос: есть ли более лаконичный / элегантный способ сделать это (желательно с использованием более сложных numpy синтаксисов / инструментов).

L = np.array([[ 0,  1,  2],
              [ 3,  4,  5],
              [ 6,  7,  8],
              [ 9, 10, 11]])

store = []
for i in range(L.shape[0]):
    store.append(np.sum(L,axis=0) - L[i])
output = np.stack(store)    

Какойдает мне правильный вывод:

array([[18, 21, 24],
       [15, 18, 21],
       [12, 15, 18],
       [ 9, 12, 15]])

1 Ответ

2 голосов
/ 21 апреля 2019

Просто вычтите L из сумм столбцов и, следовательно, используйте broadcasting в процессе векторизованного решения -

In [12]: L.sum(0) - L
Out[12]: 
array([[18, 21, 24],
       [15, 18, 21],
       [12, 15, 18],
       [ 9, 12, 15]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...