【问题标题】:How to increase the dimension of a matrix in sympy如何在 sympy 中增加矩阵的维数
【发布时间】:2020-11-09 02:07:56
【问题描述】:

假设,现在我有一个 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。

【问题讨论】:

    标签: python matrix sympy reshape dimension


    【解决方案1】:

    使用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]])
    

    【讨论】:

      猜你喜欢
      • 2018-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多