【发布时间】:2018-10-30 19:01:58
【问题描述】:
我有一个包含 32 个 numpy 数组的列表,每个数组都有(n, 108, 108, 2) 的形状,其中n 在每个数组中都不同。我想将它们全部堆叠起来以创建一个形状为(32, m, 108, 108, 2) 的numpy 数组,其中m 是ns 中的最大值,较短的数组用零填充。
我该怎么做?
我昨天问过something similar,但在我的案例中使用深度数组时,那里的答案似乎中断了。
具体来说,我最终采用了这个解决方案,它产生了最干净的代码:
data = np.column_stack(zip_longest(*data, fillvalue=0))
但是现在它抛出了这个错误:
ValueError: setting an array element with a sequence.
【问题讨论】:
-
你昨天得到了一些很好的答案,以及如何表达和测试这些想法的好例子。请按照这些示例,向我们展示您是如何尝试解决新问题的。我敢用minimal reproducible example 标记这个吗?
-
一个快速的想法 - 您可以将数组重塑为 2d (n, 108*108*2),并应用其中一种 2d 解决方案。
-
休息是什么意思?抛出异常,而不是想要的输出?
-
@hpaulj 我按照建议添加了更多细节
-
zip_longest可以,但需要正确的fillvalue. Not an integer, but an array of the right shape (e.g. np.zeros((108,108,2)))