python - 将具有不同形状的多个二维数组加载到三维上的新数组中
问题描述
我目前正在努力解决一个可能相当简单的问题,但我无法理解它。
假设我有以下两个不同形状的二维数组,我可以使用以下方法将它们组合成一个新数组:
a = np.zeros((2, 3))
b = np.zeros((4, 5))
c = np.array([a, b])
print(c.shape)
# Output
# (2,)
for elements in c:
print(elements.shape)
# Output:
# (2, 3)
# (4, 5)
到目前为止,一切都很好!但是,如果我有一个必须迭代的大列表,我该怎么做呢?这是一个只有 4 个不同二维数组的简单示例:
这按预期工作:
a = np.zeros((2,3))
b = np.zeros((4,5))
c = np.zeros((6,7))
d = np.zeros((8,9))
e = np.array([a, b, c, d])
print(e.shape)
# Output
# (4,)
for elements in e:
print(elements.shape)
# Output
# (2, 3)
# (4, 5)
# (6, 7)
# (8, 9)
这不能按预期工作,我的问题是如何以迭代的方式做到这一点:
a = np.zeros((2,3))
b = np.zeros((4,5))
c = np.zeros((6,7))
d = np.zeros((8,9))
e = None
for elements in [a, b, c, d]:
e = np.array([e, elements])
print(e.shape)
# Output
# (2,) <--- This should be (4,) as in the upper example, but I don't know how to achieve that :-/
for elements in e:
print(elements.shape)
# (2,)
# (8, 9)
我知道在每次迭代中我只是组合两个数组,为什么它总是保持在 (2,) 的形状,但我想知道如何以一种优雅的方式完成。所以基本上我想要一个第三维来说明存储的数组的数量或数量。例如,如果我迭代 1000 个不同的二维数组,我希望其形状为 (1000,)
希望我的问题是可以理解的——如果不告诉我!非常感谢!
解决方案
如果我正确理解了您的问题,您可以在列表理解中实现您想要的。这将产生与您描述为工作的上述代码完全相同的解决方案。
a = np.zeros((2,3))
b = np.zeros((4,5))
c = np.zeros((6,7))
d = np.zeros((8,9))
e = np.array([element for element in [a, b, c, d]])
print(e.shape)
for elements in e:
print(elements.shape)
推荐阅读
- java - 与 Avro 模式的向后和向前兼容性
- c# - 使用任务和 task.delay 时 HttpListener 阻塞
- javascript - 使用 Select2 + Jquery 隐藏另一个 html 组件
- flutter - 从 Flutter 中的 SlideTransition 中删除白色背景
- macos - 如何像 Figma 一样自定义 Electron 红绿灯?
- nginx - 如何正确处理具有动态结尾的 Nginx 路由?
- reactjs - 如何从表中删除数据?
- python - 无法使用长 yticklabel 保存整个条形图
- visual-studio-code - 在 Linux 上配置 VS Code (tasks.json) 为 .c 文件调用 gcc,为 .cpp 调用 g++(默认)
- ruby-on-rails - 在 Mac 上安装 Ruby 2.7.2 时出现问题