Эквивалентная функция diag R в numpy python

Когда я делаю это с R diag(0.03,2), я получаю:

     [,1] [,2]
[1,] 0.03 0.00
[2,] 0.00 0.03

Как я могу получить тот же результат в Python? Я пробовал numpy.diag(0.03,2), но получаю сообщение об ошибке: ValueError: Input must be 1- or 2-d. То же самое с numpy.diagonal(0.03,2)

Спасибо за любую помощь


person Elysire    schedule 06.12.2016    source источник


Ответы (1)


Do numpy.diag([.03]*2).

numpy.diag() принимает список диагональных компонентов, и вы можете умножать списки в python для повторения элементов.

person Iluvatar    schedule 06.12.2016
comment
Другой способ написания — np.diag(np.full(2, 0.3)), который имеет то преимущество, что не создает неэффективный для памяти список python, по крайней мере, для N>>2 - person Eric; 06.12.2016
comment
Кажется, что np.eye(2) * .03 или np.identity(2) * .03 также дадут те же результаты, хотя это эквивалентно diag(2) * 0.3 в R. - person lmo; 06.12.2016