如何在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]])