加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 3D numpy数组到块对角矩阵

发布时间:2020-12-20 11:35:58 所属栏目:Python 来源:网络整理
导读:我正在寻找一种方法将nXaXb numpy数组转换为块对角矩阵.我已经遇到了 scipy.linalg.block_diag,其中的缺点(对于我的情况)是它需要单独给出矩阵的每个块.然而,当n非常高时,这是具有挑战性的,所以为了使事情更清楚,可以说我有一个 import numpy as np a = np.r
我正在寻找一种方法将nXaXb numpy数组转换为块对角矩阵.我已经遇到了 scipy.linalg.block_diag,其中的缺点(对于我的情况)是它需要单独给出矩阵的每个块.然而,当n非常高时,这是具有挑战性的,所以为了使事情更清楚,可以说我有一个

import numpy as np    
a = np.random.rand(3,2,2)
array([[[ 0.33599705,0.92803544],[ 0.6087729,0.8557143 ]],[[ 0.81496749,0.15694689],[ 0.87476697,0.67761456]],[[ 0.11375185,0.32927167],[ 0.3456032,0.48672131]]])

我想要实现的是同样的东西

from scipy.linalg import block_diag
block_diag(a[0],a[1],a[2])
array([[ 0.33599705,0.92803544,0.,0.        ],0.8557143,[ 0.,0.81496749,0.15694689,0.87476697,0.67761456,0.11375185,0.3456032,0.48672131]])

这仅仅是在实际情况中具有数百个元素的示例.

解决方法

尝试使用block_diag(* a).见下面的例子:

In [9]: paste
import numpy as np
a = np.random.rand(3,2)
from scipy.linalg import block_diag
b = block_diag(a[0],a[2])

c = block_diag(*a)
b == c

## -- End pasted text --
Out[9]:
array([[ True,True,True],[ True,True]],dtype=bool)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读