python - 从子矩阵列表中构建矩阵
问题描述
我正在使用 sympy (python 模块)并且我正在尝试从列表中声明一个矩阵,但我需要一种特定的方式来声明它,因为我知道的那个不适合我的问题。
我有一个这样的数组
listm = [2,0,0,2,0,0,0,0,2,0,0,2,0,0,0,0]
,我想声明一个 Matrix 对象,这样 4 个数字的每个子集(但通常我想为每个 nxn 矩阵实现它)都是一个子矩阵。我的意思是,结果必须是这样的:
[2,0,0,0]
[0,2,0,0]
[2,0,0,0]
[0,2,0,0]
如果我以通常的方式声明,mat = Matrix(4,4,listm)
我会得到
[2,0,0,2]
[0,0,0,0]
[2,0,0,2]
[0,0,0,0]
在此先感谢您的帮助
解决方案
我对sympy
矩阵码不够熟悉。但有了numpy
它相对容易。
在isympy
会话中:
In [2]: listm = [2,0,0,2,0,0,0,0,2,0,0,2,0,0,0,0]
In [3]: import numpy as np
In [4]: arr = np.array(listm)
In [5]: arr
Out[5]: array([2, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0])
In [6]: arr.reshape(4,4)
Out[6]:
array([[2, 0, 0, 2],
[0, 0, 0, 0],
[2, 0, 0, 2],
[0, 0, 0, 0]])
In [7]: arr.reshape(2,2,2,2)
Out[7]:
array([[[[2, 0],
[0, 2]],
[[0, 0],
[0, 0]]],
[[[2, 0],
[0, 2]],
[[0, 0],
[0, 0]]]])
In [8]: arr.reshape(2,2,2,2).transpose(0,2,1,3).reshape(4,4)
Out[8]:
array([[2, 0, 0, 0],
[0, 2, 0, 0],
[2, 0, 0, 0],
[0, 2, 0, 0]])
并sympy.Matrix
从中做出:
In [9]: Matrix(_)
Out[9]:
⎡2 0 0 0⎤
⎢ ⎥
⎢0 2 0 0⎥
⎢ ⎥
⎢2 0 0 0⎥
⎢ ⎥
⎣0 2 0 0⎦
推荐阅读
- c# - 成对交换链表
- kotlin - 如何设置 Kotlin/Native 项目,以便将资源与可执行文件放在一起?
- android - 提交时在片段上显示 API 响应
- javascript - 在firebase中创建数组类型的推送
- uwp - UWP 日历日期选择器和时间选择器绑定到一个日期时间
- android - 仅在套接字终止后,从 Android 蓝牙套接字接收的数据才绘制在折线图中
- python - 从 np.cov() 得到的方差矩阵不同于手工计算
- ajax - 将 ajaxform 与 ajax 合并以上传图片
- javascript - JAVASCRIPT 循环遍历一个 jquery 数组并向当前项目添加一个类,同时在下一次从前一个项目中删除该类
- python - Python access nested Dictionary Value