将不同大小的数组组合成一个对象?
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 是的,实际上我有一个问题,最终结果是一个列表。我设法用我已经编写的代码规避了这一点。你的小费也很有用。谢谢你们俩。以上是关于将不同大小的数组组合成一个对象?的主要内容,如果未能解决你的问题,请参考以下文章
AngularJS,如何将多个输入组合成一个 ng 模型?具体来说,将日期、时间和时区输入组合到 datetime 对象中