【问题标题】: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] 时),但我可以使用这些死角被零填充。

我怀疑答案很简单,如果是这样,请不要对我太苛刻,但我已经为此苦苦挣扎了太久了。

此外,如果有另一种方法来做我需要的事情,而不是将所有内容存储在一个对象中,我愿意接受建议。

【问题讨论】:

  • 您想将所有矩阵存储到一个列表/数组中吗?如果是,我可以提供帮助
  • 一个简单的列表有什么问题吗?

标签: python arrays numpy


【解决方案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 是的,实际上我有一个问题,最终结果是一个列表。我设法用我已经编写的代码规避了这一点。你的小费也很有用。谢谢你们俩。
猜你喜欢
  • 2021-06-08
  • 1970-01-01
  • 2020-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多