【发布时间】:2019-10-31 00:57:57
【问题描述】:
我正在尝试编写一个大矩阵,其中包含一个较小的行矩阵(大小可变),这些矩阵分布在矩阵的“对角线”上。所有其他值都是 0。如何创建这样的矩阵?
我试过 np.put、np.append。到目前为止,这是我所拥有的:
t = [1,2,3]
n=3
m=4
A = np.zeros((2*m,m*n+m),dtype=int)
for i in range (m):
A[i-1:i-1+t.shape[0], n*(i-1):n*(i-1)+t.shape[1]] += t
print("A= \n",np.matrix(A))
我想要以下矩阵(对不起,我不知道如何显示矩阵,但如果有人也可以帮助我,我将不胜感激):
A=
[[1 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 1 2 3 0 0 0 0 0 0 0 0 0 0 ]
[0 0 0 0 0 0 1 2 3 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 1 2 3 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]
它会导致以下错误:
ValueError: 操作数不能与形状 (0,0) (1,3) (0,0) 一起广播
【问题讨论】:
-
_ "我正在尝试编写一个大矩阵,其中包括一个较小的行矩阵(大小可变),该矩阵分布在矩阵的“对角线”上。所有其他值都是 0。如何创建这样的矩阵?”我无法理解这意味着什么。您只是想创建特定的矩阵吗?
-
为什么第五个列表不是
[0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 0] -
我想创建这个特定的矩阵。这不是你给我的,因为我为单纯形分辨率创建了这个,我必须将该部分保留为空。
-
这不一定能回答我关于为什么第五个列表向下的问题,即当前
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]与模板[0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 0]不匹配 -
这个运算有没有数学术语需要泛化,还是只需要这个矩阵?在我将单纯形转换为笛卡尔坐标的工作中,您需要对两个矩阵进行点积。