如何在sympy中增加矩阵的维数
How to increase the dimension of a matrix in sympy
比方说,现在我有一个 1x1 矩阵,例如:
M = Matrix([[2]])
如何从中创建一个新的 2x2 矩阵,用 0 填充所有空白?即:
N = Matrix([[2, 0], [0, 0]])
如果它是 numpy,我可以使用 np.newaxis
;然而,sympy中似乎没有newaxis
。
所以,我尝试了:
N = M.reshape(2, 2)
我收到以下错误:
ValueError: Invalid reshape parameters 2 2
我发现以下表达式有效:
N = Matrix(2, 2, [D[0], 0, 0, 0])
不过,这有点尴尬。
有没有更好的方法?
请注意,标量乘法 N = D[0] * Matrix(2, 2, [1, 0, 0, 0])
是不可接受的,因为下次我可能会要求您将 2x2 转换为 3x3。
使用sympy.diag
.
>>> import sympy as sp
>>> m = sp.Matrix([[2]])
>>> sp.diag(m, 0)
Matrix([
[2, 0],
[0, 0]])
>>> sp.diag(m, 0, 0)
Matrix([
[2, 0, 0],
[0, 0, 0],
[0, 0, 0]])
>>> sp.diag(sp.Matrix([[1, 2], [3, 4]]), 0)
Matrix([
[1, 2, 0],
[3, 4, 0],
[0, 0, 0]])
比方说,现在我有一个 1x1 矩阵,例如:
M = Matrix([[2]])
如何从中创建一个新的 2x2 矩阵,用 0 填充所有空白?即:
N = Matrix([[2, 0], [0, 0]])
如果它是 numpy,我可以使用 np.newaxis
;然而,sympy中似乎没有newaxis
。
所以,我尝试了:
N = M.reshape(2, 2)
我收到以下错误:
ValueError: Invalid reshape parameters 2 2
我发现以下表达式有效:
N = Matrix(2, 2, [D[0], 0, 0, 0])
不过,这有点尴尬。 有没有更好的方法?
请注意,标量乘法 N = D[0] * Matrix(2, 2, [1, 0, 0, 0])
是不可接受的,因为下次我可能会要求您将 2x2 转换为 3x3。
使用sympy.diag
.
>>> import sympy as sp
>>> m = sp.Matrix([[2]])
>>> sp.diag(m, 0)
Matrix([
[2, 0],
[0, 0]])
>>> sp.diag(m, 0, 0)
Matrix([
[2, 0, 0],
[0, 0, 0],
[0, 0, 0]])
>>> sp.diag(sp.Matrix([[1, 2], [3, 4]]), 0)
Matrix([
[1, 2, 0],
[3, 4, 0],
[0, 0, 0]])