python 对角阵_python-Numpy分区对角矩阵
我想像这样生成分区对角矩阵A
给出矩阵B
B = -np.diag(np.ones(n - 2), -1) - np.diag(np.ones(n - 2), 1) + 4 * np.diag(np.ones(n - 1))
例如,
有没有一种方法可以不使用循环?
抱歉,第一次错误地上传了矩阵A和B的图形.
解决方法:
您可以将构建块堆叠到查找表中,然后通过在其中建立索引来构建A:
>>> from scipy import sparse
>>>
>>> n = 5
>>> B = sparse.diags([-1, 4, -1], [-1, 0, 1], (n-1, n-1), dtype=int).A
>>> A = sparse.diags([1, 2, 1], [-1, 0, 1], (n-1, n-1), dtype=int).A
# 0 means 0 0 0 ...,
# 1 means -I
# 2 means B
>>>
# next line builds the lookup table (using np.stack)
# does the lookup ...[A]
# and flattens the resulting 4D array after swapping
# the middle axes; the swap reorders the entries from
# Vert, Horz, vert, horz to Vert, vert, Horz, horz
>>> A = np.stack([np.zeros_like(B), -np.identity(n-1, int), B])[A].swapaxes(1, 2).reshape((n-1)*(n-1), -1)
>>> A
array([[ 4, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[-1, 4, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, -1, 4, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, -1, 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0],
[-1, 0, 0, 0, 4, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0],
[ 0, -1, 0, 0, -1, 4, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0],
[ 0, 0, -1, 0, 0, -1, 4, -1, 0, 0, -1, 0, 0, 0, 0, 0],
[ 0, 0, 0, -1, 0, 0, -1, 4, 0, 0, 0, -1, 0, 0, 0, 0],
[ 0, 0, 0, 0, -1, 0, 0, 0, 4, -1, 0, 0, -1, 0, 0, 0],
[ 0, 0, 0, 0, 0, -1, 0, 0, -1, 4, -1, 0, 0, -1, 0, 0],
[ 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 4, -1, 0, 0, -1, 0],
[ 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 4, 0, 0, 0, -1],
[ 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 4, -1, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 4, -1, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 4, -1],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 4]])
请注意,稀疏构造函数仅出于其便利性而使用.稀疏矩阵将立即转换为密集矩阵(使用.A属性).
标签:python,numpy
python 对角阵_python-Numpy分区对角矩阵相关推荐
- python 虚部_python – Numpy警告:将Complex复制到实际丢弃的虚部
我在Python中尝试使用Matlab代码 我的代码发出警告 /usr/lib/python2.7/dist-packages/numpy/core/numeric.py:235:ComplexWar ...
- python图像拼接_python numpy 和 opencv 图像拼接
将多副图片拼接为一幅大图片 加入白边,分割图像 白边的增加使用了遮罩层 import numpy as np a = np.ones((10, 10)) print(a) mask = np.ones ...
- python如何创建不同元素的矩阵_Python numpy学习(2)——矩阵的用法
Python矩阵的基本用法 mat()函数将目标数据的类型转化成矩阵(matrix) 1,mat()函数和array()函数的区别 Numpy函数库中存在两种不同的数据类型(矩阵matrix和数组ar ...
- python 对角阵_numpy创建单位矩阵和对角矩阵的实例
在学习linear regression时经常处理的数据一般多是矩阵或者n维向量的数据形式,所以必须对矩阵有一定的认识基础. numpy中创建单位矩阵借助identity()函数.更为准确的说,此函数 ...
- python文本数据转换数值矩阵_python numpy矩阵的数据类型转换
在python中,numpy矩阵的数据类型转换需要调用astype(),直接修改dtype是无效的.调用astype返回数据类型修改后的矩阵,但是源数据的类型不会变,需要再对源数据的赋值进行操作才可以 ...
- matlab imcrop 对应python函数_Python精讲Numpy基础,大牛笔记详细解释
总认为Numpy是渣渣,直到深入接触以后才知道功能这么强大.堪比Matlab啊.果然是人生苦短,我用Python.所以本文作为一个记录&笔记,文章内容大多数取自网络以&官网快速入门等, ...
- python输入数字成数组_python – Numpy:将数值插入数组的最快方法,使得数组按顺序排列...
假设我有一个数组my_array和一个奇异值my_val. (请注意,my_array始终排序). my_array = np.array([1, 2, 3, 4, 5]) my_val = 1.5 ...
- [转载] python radians函数_Python numpy.radians() 使用实例
参考链接: Python中的numpy.cos The following are code examples for showing how to use . They are extracted ...
- [转载] python histogram函数_Python numpy.histogram_bin_edges函数方法的使用
参考链接: Python中的numpy.ceil numpy.histogram_bin_edges numpy.histogram_bin_edges(a, bins=10, range=None, ...
最新文章
- 小甲鱼-累加数据段中的前3个字型数据【不对的话,请指教!】
- 设计模式——代理模式
- 数据中心发电机组的选择及控制
- POJ - 1026 Cipher(置换群的幂)
- C#中如何复制窗体到另一个项目
- 线性代数问卷调查反馈——Find The Determinant III,Takahashi‘s Basics in Education and Learning
- 学的php毫无兴趣,培训班学PHP,感觉兴趣越来越低,哎,真的很迷茫了!
- Raphael JS 矢量客户端开源框架
- Python | 重命名现有文件(os.rename()方法的示例)
- 计算机编码发展历史和编码方式
- Qt学习笔记-仿大佬读取setting文件(简单工厂模式)
- javascript中类的定义和使用{转载}
- 车辆出厂信息接口_航测遥感中心“漳州核电智慧工地管理系统平台”通过出厂验收...
- pytorch学习笔记(三十五):Momentum
- JavaScript命名冲突不可避免?
- 绍兴文理学院计算机网络期末,绍兴文理学院高频电子线路期末考试题.doc
- 什么是BOM?BOM和DOM的区别
- OpenGL ES 理解纹理与纹理过滤
- 面试:后端程序员面试题
- 玩转直播:如何从 0 到 1 构建简单直播系统