данной матрицы:Как сделать матрицу в диагональной матрице в numpy?
x = matrix([[ 0.9, 0.14], [ 0.15, 0.8]])
, как вы можете сделать первый столбец, x[:,0]
, в диагональную матрицу в NumPy? чтобы получить:
matrix([[0.9, 0],
[0, 0.15]])
данной матрицы:Как сделать матрицу в диагональной матрице в numpy?
x = matrix([[ 0.9, 0.14], [ 0.15, 0.8]])
, как вы можете сделать первый столбец, x[:,0]
, в диагональную матрицу в NumPy? чтобы получить:
matrix([[0.9, 0],
[0, 0.15]])
numpy.diag(x.A[ :, 0 ])
должны это сделать.
Здесь важна разница между matrix
и array
. Вы не получите тот же результат от numpy.diag(x[ :, 0 ])
. x.A
является сокращением на numpy.asarray(x)
, когда x
является matrix
.
Так к тому же, чтобы ответить на ваш вопрос точно я предполагаю, что я не должен забывать преобразовать ответ от array
обратно к matrix
:
numpy.matrix(numpy.diag(x.A[ :, 0 ]))
Существует diagflat
, что «Создание двух- мерный массив с плоским входом как диагональ. '. Это как ravels
вход и оборачивает результат в np.matrix
(соответствующий входной тип массива):
In [122]: np.diagflat(x[:,0])
Out[122]:
matrix([[ 0.9 , 0. ],
[ 0. , 0.15]])
Таким образом, это делает всю работу jez
ответа, просто завернув в обобщенной функции:
np.matrix(np.diag(np.asarray(x[:,0]).ravel()))
это дает numpy массив назад с одним элементом, а не диагональной матрицей с нулями – user248237dfsf
@ user248237dfsf не для меня. Возвращаемое значение: 'array ([[0.9, 0.], [0., 0.15]]). См. Править. «.A» имеет решающее значение. – jez