Для трехмерного ndarray z
с формой (k,n,n)
возможно ли без использования итерации заполнить диагонали матриц k nxn значениями, заданными 2D ndarray v
, для формы (k,n)
?
Например, результат операции должен быть таким же, как цикл по k матрицам:
z = np.zeros((3,10,10))
v = np.arange(30).reshape((3,10))
for i in range(len(z)):
np.fill_diagonal(z[i], v[i])
Есть ли способ сделать это без повторного вызова np.fill_diagonal
внутри цикла? Если возможно, я бы предпочел решение, которое может быть применено и к массивам более высоких размеров, где z.shape == (a,b,c,...,k,n,n)
и v.shape = (a,b,c,...,k,n)