Я пытаюсь заполнить диагональные элементы на матрице 100x100, как показано ниже в коде matlab, поэтому, как дублировать ее в python.В матрице 100 x 100 в python, заполняя диагональные элементы
T=(2*t0*diag(ones(1,100)))-(t0*diag(ones(1,99),1))-(t0*diag(ones(1,99),-1))
Так что я знаю, что первые члены РГО заполнит диагонали матрицы со значением 2*t0
,
, который я делаю в Python следующим образом:
x = np.zeros((100,100))
np.fill_diagonal(x,2*t0)
но дон Не знаю, как сделать 2-й и 3-й термины, я знаю, что они заполнят значения выше и ниже диагональных элементов со значением -t0
, а не все значения диагоналей, но только заполняя верхнее и нижнее значение диагонали - t0, остальные - нули, но я не знаю, как написать для него код python.
Я нашел этот код:
# diagonal with offset from the main diagonal
diag([1,2,3], k=1)
даст результат, как:
array([[0, 1, 0, 0],
[0, 0, 2, 0],
[0, 0, 0, 3],
[0, 0, 0, 0]])
, но как применить его для большой матрицы, как и в случае моей проблемы? Я работаю в интерактивном python, то есть Anaconda, так что это другие пакеты, которые я могу использовать для своей проблемы?
В будущем ('numpy version 1.10') вы сможете сделать это очень легко с помощью' 'numpy.diagonal' '(http://docs.scipy.org/doc/numpy/reference/generated/ numpy.diagonal.html # numpy.diagonal). К сожалению, будущего пока нет ... – mgilson
Будущее [здесь] (https://stackoverflow.com/a/35022497/1150462) сейчас – xuhdev