1

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

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

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

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

谢谢,

F。

4

2 回答 2

2

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

from numpy import concatenate, zeros
from scipy.linalg import toeplitz

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

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

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

所以这是值得期待的。

于 2015-03-01T03:48:05.730 回答
0

另一种选择是使用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)
于 2021-11-16T12:19:35.043 回答