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

Posted

技术标签:

【中文标题】将不同大小的数组组合成一个对象?【英文标题】:Combining different sized arrays into one object? 【发布时间】:2019-04-17 20:44:12 【问题描述】:

在 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】:

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

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

【讨论】:

啊,是的,正是我需要的。非常感谢! 很高兴听到您想要完全相同。享受吧。 @webDev 我不确定他是否希望/需要在存储数组之前将数组转换为列表,因为他打算稍后将它们矩阵相乘。我认为m_objects.append(a) 等也可以。 @SubhaneilLahiri 是的,实际上我有一个问题,最终结果是一个列表。我设法用我已经编写的代码规避了这一点。你的小费也很有用。谢谢你们俩。

以上是关于将不同大小的数组组合成一个对象?的主要内容,如果未能解决你的问题,请参考以下文章

将两个数组 排列组合到一个数组集合 求java 代码

将多个 numpy 数组组合成不同形状之一

AngularJS,如何将多个输入组合成一个 ng 模型?具体来说,将日期、时间和时区输入组合到 datetime 对象中

如何将哈希数组组合成一个数组?

我需要将数组元素中的所有对象组合成一个新的对象数组

将 Sprite 对象数组合并为一个 Sprite - Unity