您好,我是Python新手,我需要创建一个非常特殊的矩阵(见上文)。它只是在每行重复7个不同的值,然后在行的末尾加零。在每行之后填充两个零并重复该阵列。当数组到达结尾时,它将从开始继续,直到 h0(2)处于索引[x,0]。之后,另一个 h 以相同的方式启动 我认为天真的方法是使用嵌套和循环计数器和中断。
在这篇文章中,已经提出了一个类似的问题: Creating a special matrix in numpy 但它不完全是我需要的。
有没有更聪明的方法来创建这个而不是像上一篇文章那样的嵌套循环,或者甚至还有这种矩阵的函数/名称?
答案 0 :(得分:0)
我会专注于重复的模式,并尝试从块构建数组。
例如,我看到3组行,包含h_0
,h_1
和h_2
元素。
在每一个中我都看到重复Hs = [h(0)...h(6)]
序列。
看起来您可以在一个长1d数组中连接[Hs, zeros(n), Hs, zeros(n),...]
,并将其重新整形为(a,b)
行。
或者您可以创建一个A = np.zeros((a,b))
数组,并将Hs
重复插入正确的位置。如果A.flat[x:y]=Hs
包含在下一行,请使用Hs
。换句话说,即使A
为2d,您也可以插入Hs
值,就像它是1d一样(对于其数据缓冲区也是如此)。
你的例子过于复杂,无法在短时间内给你一个确切的答案 - 我的注意力不足以解决细节问题。但这可能会给你一些想法。寻找重复的模式和slices
。