def makediag3d(a):
    a = np.asarray(a)
depth, size = a.shape
x = np.zeros((depth, size, size))
for i in range(depth):
    x[i].flat[slice(0, None, 1 + size)] = a[i]
return x
как построить диагональный массив, используя 2d-массив в numpy?