【问题标题】:Create a matrix made of matrices with different sizes创建一个由不同大小的矩阵组成的矩阵
【发布时间】:2016-07-12 11:28:07
【问题描述】:

我想创建一个矩阵,其中元素是矩阵(具有不同大小)、向量和数字。 例如,我有接下来的两个矩阵,一个向量和一个数字:

A = [1 2 3
     4 5 6
     7 8 9]

B = [10 11
     12 13]

C = [14
     15
     16]

D = 17

我想获得一个矩阵 2x2,K,元素:
k_11 = A, k_12 = B, k_21 = C, k_22 = D

这个想法是有可能选择矩阵、向量或大矩阵 K 的数字,就像它们是矩阵的“简单”元素一样。 IE。: K[0,0] = A, K[0,1] = B 等等。

首先,我认为我可以使用K.append(A)... 获取矩阵、向量和数字的列表,但后来我发现我无法将列表转换为矩阵。
其次,我尝试用numpy.bmat 创建一个块矩阵。 bmat 的问题是输入元素的尺寸必须完全匹配。
任何的想法?

谢谢。

【问题讨论】:

  • 您可以将较小的矩阵作为对象放在object类型的numpy数组中...

标签: python numpy matrix


【解决方案1】:

首先,将 4 个对象存储在一个 2D 列表中,然后将该列表变成一个numpy.matrix

K = matrix([[A, B], [C, D])

【讨论】:

  • 您可能需要解释 object 数据类型以完善您的答案,并注意限制,例如,无法对对象矩阵进行矩阵数学运算。
  • Err,实际上我不确定object一般 限制。在这里,很明显矩阵数学不起作用(元素具有不同的形状......)。但无论代表什么数据,总是如此吗?没有试图提出任何建议,我真的不知道。
【解决方案2】:

阅读答案后,我创建了一个二维列表,但我没有使用numpy.matrix,因为通过列表我可以选择我想要的“矩阵”元素。答案在这里:

>>> K = [ ]
>>> K.append([ ])
>>> K.append([ ]) 
>>> K[0].append[A]
>>> K[0].append[C]
>>> K[1].append[B]
>>> K[1].append[D]

所以,如果我想选择元素 A:

>>> K[0][0] 

还有元素B:

>>> K[1][0]

【讨论】:

  • K=[[A, C], [B, D]] 也应该可以工作。这是一个列表列表。列表可以包含任何元素的混合,例如[[A],[C,B,D]], [[A, C],[B,D, 无]]`.
猜你喜欢
  • 2014-10-16
  • 2022-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多