I'm trying to compute average values of shifted diagonals of a square array.
Given input matrix like (in reality much larger than 3x3):
[[a, b, c],
[d, e, f],
[g, h, i]]
correct answer would be
[g, (d+h)/2, (a+e+i)/3, (b+f)/2, c]
A code to compute such average could be:
import numpy as np
def offset_diag_mean(mat):
n = len(mat)
return np.array([np.mean(np.diag(mat,k)) for k in range(-n+1,n)])
I assume one can do without a list comprehension (speed is quite important for me). Any clever solutions I'm missing?