#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.]])