Python生成对角矩阵和对角块矩阵

这篇具有很好参考价值的文章主要介绍了Python生成对角矩阵和对角块矩阵。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

对角矩阵

scipy中的函数

scipy.linalg中,通过tri(N, M=None, k=0, dtype=None)可生成 N × M N\times M N×M对角矩阵,若M=None,则 M M M默认为 N N Nk表示矩阵中用1填充的次对角线个数。

print(tri(3,5,2,dtype=int))
'''
[[1 1 1 0 0]
 [1 1 1 1 0]
 [1 1 1 1 1]]
'''

numpy中也提供了多种对角矩阵生成函数,包括diag, diagflat, tri, tril, triu等,

numpy.diagflat

diagflat用于生成对角矩阵,diagdiagflat基础上,添加了提取对角元素的功能,例如

>>> np.diagflat([1,2,3])
array([[1, 0, 0],
       [0, 2, 0],
       [0, 0, 3]])
>>> np.diag([1,2,3])
array([[1, 0, 0],
       [0, 2, 0],
       [0, 0, 3]])
>>> np.diag(np.ones([3,3])) #提取对角元素
array([1., 1., 1.])

numpy.tri

tri(M,N,k)用于生成M行N列的三角阵,其元素为0或者1,k用于调节01的分界线相对于对角线的位置,例如

>>> np.tri(3,5,1)
array([[1., 1., 0., 0., 0.],
       [1., 1., 1., 0., 0.],
       [1., 1., 1., 1., 0.]])
>>> np.tri(3,5,2)
array([[1., 1., 1., 0., 0.],
       [1., 1., 1., 1., 0.],
       [1., 1., 1., 1., 1.]])
>>> np.tri(3,5,3)
array([[1., 1., 1., 1., 0.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.]])

tril, triu可用于提取出矩阵的左下和右上的三角阵,其输入参数除了待提取矩阵之外,另一个参数与tri中的k相同。

x = np.arange(12).reshape(4,3)
>>> np.tril(x,-1)
array([[ 0,  0,  0],
       [ 3,  0,  0],
       [ 6,  7,  0],
       [ 9, 10, 11]])
>>> np.triu(x,-1)
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 0,  7,  8],
       [ 0,  0, 11]])

对角块矩阵

对于scipy.linalg.block_diag(A,B,C)而言,会生成如下形式矩阵

A 0 0 0 B 0 0 0 C \begin{matrix} A&0&0\\0&B&0\\0&0&C\\ \end{matrix} A000B000C

from scipy.linalg import *
import numpy as np
A = np.ones([2,2])
B = np.round(np.random.rand(3,3),2)
C = np.diag([1,2,3])
bd = block_diag(A,B,C)
print(bd)

其bd打印结果是一个矩阵

[ 1. 1. 0. 0. 0. 0. 0. 0. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.8 0.38 0.41 0. 0. 0. ⋅ 0. 0. 0.84 0.45 0.24 0. 0. 0. ⋅ 0. 0. 0.32 0.22 0.25 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 2. 0. 0. 0. 0. 0. 0. 0. 0. 3. ] \begin{bmatrix} 1.&1.&0.&0.&0.&0.&0.&0. \\ 1.&1.&0.&0.&0.&0.&0.&0. \\ 0.&0.&0.8&0.38&0.41&0.&0.&0.·\\ 0.&0.&0.84&0.45&0.24&0.&0.&0.·\\ 0.&0.&0.32&0.22&0.25&0.&0.&0. \\ 0.&0.&0.&0.&0.&1.&0.&0. \\ 0.&0.&0.&0.&0.&0.&2.&0. \\ 0.&0.&0.&0.&0.&0.&0.&3. \end{bmatrix} 1.1.0.0.0.0.0.0.1.1.0.0.0.0.0.0.0.0.0.80.840.320.0.0.0.0.0.380.450.220.0.0.0.0.0.410.240.250.0.0.0.0.0.0.0.1.0.0.0.0.0.0.0.0.2.0.0.0.0.0.0.0.0.3.

其中

A = [ 1 1 1 1 ] B = [ 0.8 0.38 0.41 0.84 0.45 0.24 0.32 0.22 0.25 ] C = [ 1 0 0 0 2 0 0 0 3 ] A=\begin{bmatrix}1&1\\1&1\end{bmatrix}\quad B=\begin{bmatrix}0.8 &0.38&0.41\\0.84&0.45&0.24\\0.32&0.22&0.25\end{bmatrix}\quad C=\begin{bmatrix}1&0&0\\0&2&0\\0&0&3\end{bmatrix} A=[1111]B= 0.80.840.320.380.450.220.410.240.25 C= 100020003 文章来源地址https://www.toymoban.com/news/detail-428314.html

到了这里,关于Python生成对角矩阵和对角块矩阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 线性代数Python计算:矩阵对角化

    线性变换 T T T 的矩阵 A ∈ P n × n boldsymbol{A}in P^{ntimes n} A ∈ P n × n 的对角化,即寻求对角阵 Λ boldsymbol{Lambda} Λ ,使得 A boldsymbol{A} A ~ Λ boldsymbol{Lambda} Λ ,需分几步走: (1)解方程 det ⁡ ( λ I − A ) = 0 det(lambdaboldsymbol{I}-boldsymbol{A})=0 det ( λ I − A ) = 0 ,得根 λ 1 , λ

    2024年02月08日
    浏览(48)
  • 【Python 随练】求 3*3 矩阵对角线元素之和

    求一个 3x3 矩阵对角线元素之和 在本篇博客中,我们将解决一个矩阵操作问题:求一个 3x3 矩阵对角线元素之和。我们将介绍矩阵的概念,并提供一个完整的代码示例来计算矩阵对角线元素的和。 我们需要计算给定 3x3 矩阵的对角线元素之和。 为了计算矩阵的对角线元素之和

    2024年02月14日
    浏览(39)
  • python经典百题之矩阵对角线之和

    题目要求计算一个3x3矩阵的对角线元素之和,即主对角线和副对角线的元素之和。 主对角线的元素位于矩阵的左上到右下的对角线上,副对角线的元素位于矩阵的右上到左下的对角线上。 我们可以使用三种不同的方法来实现这个程序,分别是: 直接遍历法 :遍历主对角线和

    2024年02月04日
    浏览(41)
  • Python编程习题(22):矩阵行、列、对角线和的最大值

    求一个 3*3 矩阵每行、每列及对角线和的最大值。 输入格式: 在一行输入9个整数。 输出格式: 在一行输出每行、每列及对角线和的最大值。 输入样例: 在这里给出一组输入。例如: 输出样例: 在这里给出相应的输出。例如: 解答代码: 

    2024年02月16日
    浏览(58)
  • Scipy 高级教程——稀疏矩阵

    Scipy 提供了处理稀疏矩阵的工具,这对于处理大规模数据集中的稀疏数据是非常有效的。本篇博客将深入介绍 Scipy 中的稀疏矩阵功能,并通过实例演示如何应用这些工具。 1. 稀疏矩阵的表示 在 Scipy 中,稀疏矩阵可以使用 scipy.sparse 模块进行表示。常用的稀疏矩阵类型有 cs

    2024年01月17日
    浏览(37)
  • 【scipy 基础】--稀疏矩阵

    稀疏矩阵 是一种特殊的矩阵,其非零元素数目远远少于零元素数目,并且非零元素分布没有规律。 这种矩阵在实际应用中经常出现,例如在物理学、图形学和网络通信等领域。 稀疏矩阵 其实也可以和一般的矩阵一样处理,之所以要把它区分开来进行特殊处理,是因为: 一

    2024年02月05日
    浏览(40)
  • Python实验一基本数据类型针对用元组创建的5*5矩阵,格式化分行输出元素并分别计算两个主对角线元素之和;

    又到了自闭环节了,做个实验报告差点自闭,自己写的真的是很长的代码才实现,加油吧 这个根据参考网上大佬的方法进行了一些优化,在这里给大家提供参考。 输出结果: 对大家有帮助的话,记得关注点个赞哈!

    2024年02月16日
    浏览(46)
  • 【计算几何】Python:德劳内三角剖分算法 | 利用 scatter 绘制散点图 | 实现外接圆生成 | scipy库的 Dealunay 函数 | 实战: A-B间欧氏距离计算

       猛戳!跟哥们一起玩蛇啊  👉 《一起玩蛇》🐍 💭 写在前面 :本章我们将介绍的是计算机和领域的 Delaunay 三角剖分算法(即德劳内三角剖分),它是一种用于将点集划分成三角形网格的算法。点集的三角剖分属于计算几何学科范畴,对数值分析、有限元分析与图形学

    2024年02月03日
    浏览(42)
  • 【Python】计算几何:德劳内三角剖分算法 | 利用 scatter 绘制散点图 | 实现外接圆生成 | scipy库的 Dealunay 函数 | 实战: A-B间欧氏距离计算

       猛戳!跟哥们一起玩蛇啊  👉 《一起玩蛇》🐍 💭 写在前面 :本章我们将介绍的是计算机和领域的 Delaunay 三角剖分算法(即德劳内三角剖分),它是一种用于将点集划分成三角形网格的算法。点集的三角剖分属于计算几何学科范畴,对数值分析、有限元分析与图形学

    2024年02月02日
    浏览(44)
  • numpy 邻接矩阵转稀疏矩阵 array to scipy csr_matrix

    也就是说,一个dense的numpy矩阵,如何转换成scipy包里面的sparse的csr矩阵看代码: 输出: print(csr_a.toarray()) print(csr_a.tocoo())

    2024年02月12日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包