【发布时间】:2016-05-22 23:34:47
【问题描述】:
您好,我是 Python 新手,我需要创建一个非常特殊的矩阵(见上文)。它只是在每行重复 7 个不同的值,后跟零到行的末尾。每行后填充两个零并重复数组。当数组到达末尾时,它将从头开始直到 h0(2) 位于索引 [x,0] 处。之后另一个 h 以同样的方式开始 我认为天真的方法是使用带有计数器和中断的嵌套和循环。
在这篇文章中,已经提出了一个类似的问题: Creating a special matrix in numpy 但这并不是我所需要的。
有没有更聪明的方法来创建这个而不是像上一篇文章中的嵌套循环,或者这种矩阵是否有函数/名称?
【问题讨论】:
-
欢迎来到 StackOverflow。请在您的问题中包含最小形式的代码。外部链接可能会关闭,然后您的问题不会帮助任何后续访问者。另请阅读正确的问题应包含哪些内容:MCVE
-
我假设第二行中的第二个
h_0(0)应该是h_0(1)? -
结束标准有点模糊(它似乎依赖于行数,而不是
h_x()是否完成了“它的循环”),但我只是创建一个带有double for 循环:最实用、最直接的方式。为了提高效率,您可以将其包装在列表理解中。列表出现后,将其转换为 numpy 数组,然后将其重塑为 3N/2 乘 N。 -
您所描述的内容看起来像是多个堆叠的Toeplitz matrices。您可以使用
scipy.linalg.toeplitz和适当的零填充 h 向量创建单独的子矩阵,然后使用np.vstack按行连接它们。 -
是的,Evert,你是对的,第二个
h_0(0)应该是h_0(1)。