python-3.x - Numpy:递归生成矩阵

标签 python-3.x numpy matrix

是否有一种智能方法可以在 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/

相关文章:

python - 如何从一组相似图像中删除点状水印?

sockets - Python3 从 self.connect(('badhost' ,6667) 时捕获错误

python - 使用 python 抓取 crunchbase 数据

python-3.x - 是否有一个函数可以查找列表中哪些 float 加起来等于特定间隔内的数字?

python - 使用 C-API 在 Numpy 数组中反转轴

python - pandas:创建 n 个新列来包含最后 n 个值(滚动)

python - MemoryError 与 numpy arange

java - 优化排序矩阵中第 N 个最大元素的代码

java - 求逆矩阵

python - 在 Pytorch 中强制执行 nn.Parameter(矩阵)参数中的结构