将不同大小的数组组合成一个对象?

时间:2019-04-17 20:44:12

标签: python arrays numpy

在Python 3.7中,Numpy:我有许多不同大小的数组,例如(5,3),(3,3)和(3,2)数组。 (背景:他们定义了矩阵,这些矩阵将相继与初始向量相乘。)为了获得灵活的代码(例如,非常容易地在其中一个之间插入第四个矩阵),我想将所有矩阵存储在一个对象中。

我试图简单地将其放入先前生成的零数组中,该数组应该足够大以适合所有它们,但是并没有按预期工作。下面的代码。

for i in range(CollectionSize-1):
        ArrayCollection[:, :, i] = Array(Lenght1[i], Lenght2[i])    

如果我运行这行代码,就会收到错误消息

ValueError: could not broadcast input array from shape (5,3) into shape (5,5)

我最好想拥有一个由这些数组组成的对象,且没有死角(因此,如果我调用ArrayCollection[:, :, 0],那么我想要一个不同大小的数组,而当我调用ArrayCollection[:, :, 1]时),但是我可以将这些死点填充为零。

我怀疑答案很简单,如果是这种情况,请不要对我太苛刻,但我现在对此已经太久了。

如果还有另一种方法来完成我需要的事情,而不是将所有内容存储在一个对象中,那么我很乐意提出建议。

1 个答案:

答案 0 :(得分:0)

您想要这样的东西吗? (如果要将矩阵存储到列表中):

a = np.zeros((5, 3))
b = np.zeros((3, 3))
c = np.zeros((3, 2))
m_objects = []
m_objects.append(a.tolist())
m_objects.append(b.tolist())
m_objects.append(c.tolist())
#print matrices
for i in m_objects:
    print(np.matrix(i))
    print("-----")

输出:

[[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.]]
-----