是否有一种智能方法可以在 numpy 中递归生成大小不断增加的矩阵? 我确实有一个生成矩阵
g = np.array([[1, 0], [1, 1]])
在每次进一步的迭代中,两个轴的大小都会加倍,形成一个新的矩阵格式:
[g_{n-1}, 0], [g_{n-1}, g_{n-1}]
这意味着新版本将是:
g = np.array([[1, 0, 0, 0], [1, 1, 0, 0], [1, 0, 1, 0], [1, 1, 1, 1]])
有没有简单的方法可以获得类似的东西? 我还可以生成一个大小为 (len(g)*2, len(g)*2) 的矩阵,并尝试在两个 for 循环中手动填充它,但这看起来非常烦人。
有更好的方法吗?
PS:对于那些对此感到好奇的人,该矩阵是极性码的生成矩阵。
最佳答案
IIUC,使用numpy.block
的一种方法:
g = np.array([[1, 0], [1, 1]])
g = np.block([[g, np.zeros(g.shape)], [g, g]])
输出(迭代 1):
array([[1., 0., 0., 0.],
[1., 1., 0., 0.],
[1., 0., 1., 0.],
[1., 1., 1., 1.]])
输出(迭代 2):
array([[1., 0., 0., 0., 0., 0., 0., 0.],
[1., 1., 0., 0., 0., 0., 0., 0.],
[1., 0., 1., 0., 0., 0., 0., 0.],
[1., 1., 1., 1., 0., 0., 0., 0.],
[1., 0., 0., 0., 1., 0., 0., 0.],
[1., 1., 0., 0., 1., 1., 0., 0.],
[1., 0., 1., 0., 1., 0., 1., 0.],
[1., 1., 1., 1., 1., 1., 1., 1.]])
关于python-3.x - Numpy:递归生成矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70248207/