Я хочу написать функцию SumThree
, которая получает матрицу размером (n x (n+2))
в виде массива и возвращает вектор v
, который определен следующим образом: v[i] = A[i,i] + A[i,i+1] + A[i,i+2]
.
Ограничения: Нет петель, вы не можете использовать функцию sum
(np.sum
)
Я решил это с помощью рекурсии и с изменением сигнатуры функции (которая должна получать только матрицу). Но я ищу более простое и эффективное решение.
Примерно так (вот что я пробовал):
def sumThree(array, curr=0, i=0, v=[]):
if curr < array.size
curr += array.shape[1]
else
return v
count = array.size
v[i] = array[curr,curr] + array[curr,curr+1] + array[curr,curr+2]
sumThree(array, curr, i+1, v)
Я еще не пробовал, но думаю, что это должно работать:
def sumThree(a):
return (a.diagonal() + a.diagonal(1) + a.diagonal(2))