问题描述
如何在 Sympy 中创建尺寸为p
的下对角方阵?
例如,如果p == 4
我想获得以下矩阵:
| 0 0 0 0 |
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 0 |
我目前正在使用这种方法,但我想知道是否存在类似于eye(p)
的功能。
def f(i,j):
if i - j == 1:
return 1
else:
return 0
print(Matrix(p,p,f))
以下是p == 4
的输出:
Matrix([[0,0],[1,[0,1,0]])
解决方法
您可以借用Numpy的np.eye()
并使用k
参数,该参数只是“移动”对角线(似乎不受SymPy的eye()
支持):
import sympy as sym
import numpy as np
print(sym.Matrix(np.eye(4,k=-1,dtype=int)))
# Matrix([[0,0],[1,[0,1,0]])
或:
print(sym.Matrix(np.eye(4,4,-1,0]])