python - 如何在 Sympy 中创建下对角矩阵?
问题描述
如何p
在Sympy中创建大小的下对角方阵?
例如,如果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, 0, 0], [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0]])
解决方案
你可以借用 Numpy'snp.eye()
并使用k
参数,它只是“移动”对角线(并且 SymPy's 似乎不支持eye()
):
import sympy as sym
import numpy as np
print(sym.Matrix(np.eye(4, k=-1, dtype=int)))
# Matrix([[0, 0, 0, 0], [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0]])
或者:
print(sym.Matrix(np.eye(4, 4, -1, dtype=int)))
# Matrix([[0, 0, 0, 0], [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0]])
推荐阅读
- clojure - 如何防止评估 clojure 函数的参数?
- php - 无法检索存储在 Laravel 的 switch/case 中的会话
- eclipse-plugin - 使用 Eclipse SWT 核心表达式隐藏菜单项
- java - 这个变量是否覆盖
- python - 如何将从.txt文件解析的空字符串转换为None?
- c++ - C++ 自定义 HashTable 的使用给出了 SegFault
- angular - 在 Angular 中获取上一个 URL
- cassandra - 有没有办法将现有的 cassandra(连同数据)与 Janusgraph 一起使用
- powershell - 目标计算机上的 PowerShell 在 TFS 2018 发布管道中失败
- regex - 正则表达式匹配文本和换行