python - 堆叠多个 2D 数组以生成 3D 数组
问题描述
我有 4 个 numpy 数组,每个数组的形状(5,5)。我想将它们堆叠起来,以便得到一个新的形状数组(5,5,4)。我尝试使用:
N = np.stack((a, b, c, d))
但是,由于我是使用 numpy 的新手,我无法理解为什么它给出的形状是 (4, 5, 5) 而不是 (5, 5, 4)。我应该使用另一种方法吗?dstack 工作但改变了我的数组,我认为它转置了它们。
例如 4 个数组
[[1,2]
[3,4]]
[[1,2]
[3,4]]
[[1,2]
[3,4]]
[[1,2]
[3,4]]
当堆叠我期待:
[[[1,2]
[3,4]]
[[1,2]
[3,4]]
[[1,2]
[3,4]]
[[1,2]
[3,4]]]
这与堆栈按预期工作,但会给出(4,2,2)而不是(2,2,4)的形状。据我了解,形状是(行、列、深度)我错了吗?
解决方案
我相信你可以连接数组,并重塑为 3D 数组:
l = [a,b,c,d]
np.concatenate(l).reshape(len(l), *a.shape)
或者,如果您想避免创建该列表并事先知道数组的数量:
np.concatenate((a,b,c,d)).reshape(4, *a.shape)
检查共享示例:
a = [[1, 2], [3, 4]]
d = c = b = a
np.concatenate((a,b,c,d)).reshape(4, *np.array(a).shape)
array([[[1, 2],
[3, 4]],
[[1, 2],
[3, 4]],
[[1, 2],
[3, 4]],
[[1, 2],
[3, 4]]])
推荐阅读
- sql - 如何在 SPARQL 中使用 GroupBy 和 GroupConcat
- ruby-on-rails - 为什么浏览器在使用 Rails 应用程序创建的会话检查 chrome 上的 cookie 时显示会话而不是详细日期
- c++ - 为什么要在定义函数之前声明它?
- java - JSP 突然停止发送 CSS
- objective-c - UICollectionView 显示 3 个单元格
- spring - Vaadin Spring 和 Hibernate:无法初始化代理 - 没有会话
- python - 尝试在 Python 中打印打开文件的元素
- ios - Bonjour - 如何获取 IP 地址以唯一标识连接到网络的每个客户端
- sql - 我如何只为一支球队获得总得分最高的人?
- .net - 如何在 .NET Windows 窗体中自定义 datagridview 中的列宽