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

我正在寻找一种方法将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. , 0. ],

[ 0.6087729 , 0.8557143 , 0. , 0. , 0. , 0. ],

[ 0. , 0. , 0.81496749, 0.15694689, 0. , 0. ],

[ 0. , 0. , 0.87476697, 0.67761456, 0. , 0. ],

[ 0. , 0. , 0. , 0. , 0.11375185, 0.32927167],

[ 0. , 0. , 0. , 0. , 0.3456032 , 0.48672131]])

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值