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

python – 3D numpy数组到块对角矩阵,第1张

概述我正在寻找一种方法将nXaXb numpy数组转换为块对角矩阵.我已经遇到了 scipy.linalg.block_diag,其中的缺点(对于我的情况)是它需要单独给出矩阵的每个块.然而,当n非常高时,这是具有挑战性的,所以为了使事情更清楚,可以说我有一个 import numpy as np a = np.random.rand(3,2,2)array([[[ 0.33599705, 我正在寻找一种方法将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_diagblock_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]: pasteimport numpy as npa = np.random.rand(3,2)from scipy.linalg import block_diagb = 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)
总结

以上是内存溢出为你收集整理的python – 3D numpy数组到块对角矩阵全部内容,希望文章能够帮你解决python – 3D numpy数组到块对角矩阵所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1193133.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存