微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

numpy:拆分二维 numpy 数组,然后创建二维对角块数组

如何解决numpy:拆分二维 numpy 数组,然后创建二维对角块数组

假设,我得到了一个 2D (n \times 2*n) numpy 数组,如下所示,

dat = np.array([[1,2,3,4],[5,6,7,8]])

我想把它平均分成两个二维数组,然后创建一个二维对角块数组,如下图,

a = dat[:,0:2]
b = dat[:,2:]
result = np.block([
    [a,np.zeros((2,2))],[np.zeros((2,2)),b              ]
])

numpy 中有没有更好的方法,我不需要指定这部分“np.zero((n,n))”

解决方法

使用scipy.linalg.block_diag

>>> import scipy.linalg
>>> scipy.linalg.block_diag(a,b)
array([[1,2,0],[5,6,[0,3,4],7,8]])

取自 this 帖子

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。