Ошибка значения: несоответствие формы: массив значений формы (3,3) не удалось передать в результат индексирования формы (3,). Кто-нибудь может мне помочь?

#arrays #matrix #numpy-ndarray

Вопрос:

Я хочу вставить/поместить массив 1D в верхнюю/нижнюю треугольную часть матрицы идентификаторов. Как заменить каждый верхний треугольный элемент массивом вектор/1D следующим образом?

 import numpy as np

X = np.array([[1,2,3],[4,5,6],[7,8,9]])
#array([[1, 2, 3],
#       [4, 5, 6],
#       [7, 8, 9]])

#get the upper triangular part of this matrix
v = X[np.triu_indices(X.shape[0], k = 1)]
print(v)
# array([2, 3, 6])
#Let's consider
V = np.array([[1,2,3],[4,5,6],[7,8,9]])

# put it back into a 2D symmetric array
size_X = 3
X = np.zeros((size_X,size_X))
diagonal = np.identity((X.shape[0]),dtype=np.ndarray)
X[np.triu_indices(X.shape[0], k = 1)] = V
# Error message
X = X   X.T diagonal
#I except the X should be like this
#array([[1., [1,2,3], [4,5,6]],
#       [[1,2,3], 1., [7,8,9]],
#       [[4,5,6], [7,8,9], 1.]])