Python实现生成对角矩阵和对角块矩阵
作者:微小冷 发布时间:2021-03-16 11:45:00
标签:Python,矩阵
对角矩阵
scipy中的函数
在scipy.linalg中,通过tri(N, M=None, k=0, dtype=None)可生成N×M对角矩阵,若M=None,则M默认为N。k表示矩阵中用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用于生成对角矩阵,diag在diagflat基础上,添加了提取对角元素的功能,例如
>>> 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用于调节0和1的分界线相对于对角线的位置,例如
>>> 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)而言,会生成如下形式矩阵
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)
'''
[[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. ]]
'''
其中
来源:https://blog.csdn.net/m0_37816922/article/details/129936879
0
投稿
猜你喜欢
- 一、前言Python语言近年来人气爆棚。它广泛应用于数据科学,人工智能,以及网络安全问题中,由于代码可读性较强,学习效率较高,吸引了许多非科
- 这篇文章主要介绍了基于python实现蓝牙通信代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- blur事件在元素失去焦点时触发。在一些jquery的教程、api手册等上面对blur事件,提供了一个错误的例子,就是关于p标签失去焦点的问
- 目前已经有很多生成html的新闻系统,但是都是用的模板,本函数实现把asp页面产生的html代码保存成为一个html文件,这样就没有必要改动
- 1、 前端传参要求项目开发中经常会遇到对用户输入内容的限制,本篇对常用限制做一总结。如下图所示,标识字段有严格命名限制,用户输入校验这部分工
- 如下所示:def prn_obj(obj): print '\n'.join(['%s:%s'
- 行高的概念看上去很简单——文字行的高度,其实,行高所涉及到的基础知识,对于今后理解其它属性也很重要。大片密密麻麻的文字往往会让人觉得乏味,因
- select UNIX_TIMESTAMP(ADDDATE(NOW(),INTERVAL -60 DAY))首先根据now()获得当前时间使
- 两个例子package main import ( "fmt" "time")func Proces
- 1 以下代码的输出结果为:print(round(-3.6))A.-4B.-4.0C.-3D. -3.02 以下代码的输出结果为(Pytho
- 我为 Compose 写了一个波浪效果的进度加载库,API 的设计上符合 Compose 的开发规范,使用非常简便。1. 使用方式在 roo
- json_encode()如何转化一个对象? 使用 json_encode() 将数组 array
- MySQL授权命令grant的使用方法:本文实例,运行于 MySQL 5.0 及以上版本。MySQL 赋予用户权限命令的简单格式可概括为:g
- 导语周末、假期来了,七夕也快到了,又到一年中最一票难求的时候了!那些假期想回家、过节异地恋的小可爱们,能准时抢到回家(约会对象)的城市票嘛?
- 引言首先来一段简单的代码逻辑热身,下面的代码大家觉得应该会打印什么呢?type OKR struct { id
- 一、anaconda的安装首先,下载安装包。Anaconda的下载方式有两种:通过官网下载,选择适合自己的电脑版本的安装包。https://
- Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形
- 前言:作为一名从小就看篮球的球迷,会经常逛虎扑篮球及湿乎乎等论坛,在论坛里面会存在很多精美图片,包括NBA球队、CBA明星、花边新闻、球鞋美
- 前言在论坛中回答了一个问题,导入csv 数据,并对导入的数据增加一个新的列date datetime。要求在10s内完成,200w行数据的导
- 一个完整的域名,由根域、顶级域、二级、 * ……域名构成,每级域名之间用点分开,每级域名由字母、数字和减号构成(第一个字母不能是减号),不区分