【问题标题】:Toeplitz matrix using numpy/scipy使用 numpy/scipy 的 Toeplitz 矩阵
【发布时间】:2015-03-01 03:30:55
【问题描述】:

在 Octave 或 Matlab 中,有一种简洁、紧凑的方法可以创建大型 Toeplitz 矩阵,例如:

T = toeplitz([1,-0.25,zeros(1,20)])

这样可以节省大量时间,否则这些时间会通过使用额外的代码行来用数十个或数百个零填充矩阵。

然而,我似乎无法对 scipy 或 numpy 做同样的事情,尽管这两个库都有 toeplitz() 和 zeros() 函数。 有没有类似的方法可以做到这一点,还是我必须自己制定一个例程才能做到这一点(不是一个大问题,但仍然很麻烦)?

谢谢,

F.

【问题讨论】:

    标签: python numpy scipy toeplitz


    【解决方案1】:

    目前我认为你能做的最好的是:

    from numpy import concatenate, zeros
    from scipy.linalg import toeplitz
    
    toeplitz(concatenate([[1., -.25], zeros(20)]))
    

    从 python 3.5 开始,我们将拥有:

    toeplitz([1., -.25, *zeros(20)])
    

    所以这是值得期待的。

    【讨论】:

    • 感谢您的提示,效果很好!我忘了提到我还没有使用 Python 3.x。我也犯了一个错误:据我所知,numpy 没有 toeplitz()。那是 scipy 的一部分。
    【解决方案2】:

    另一个选项是使用r_

    import numpy as np
    from scipy.linalg import toeplitz
    
    toeplitz(np.r_[1, -0.25, np.zeros(20)])
    

    您也可以使用列表:

    toeplitz([1, -0.25] + [0]*20)
    

    【讨论】:

      猜你喜欢
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      相关资源
      最近更新 更多