在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]
时),但是我可以将这些死点填充为零。
我怀疑答案很简单,如果是这种情况,请不要对我太苛刻,但我现在对此已经太久了。
如果还有另一种方法来完成我需要的事情,而不是将所有内容存储在一个对象中,那么我很乐意提出建议。
答案 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.]]
-----