arrays - 如何将形状 (N , N) 维度的数组重塑为 (N , N , 3)
问题描述
我有一个形状数组(2084、2084),我想将其重塑为(2084、2084、3)。我尝试使用 np.dstack 但它给了我这样的东西 (1, 2084, 2084)
patch = (2084, 2084)
patch_new = np.dstack(patch)
我该怎么做?
解决方案
您错过了在深度堆叠之前将阵列提升到 3D 。所以,你可以使用类似的东西:
In [93]: patch = (2084, 2084)
In [94]: arr = np.random.random_sample(patch)
# make it as 3D array
In [95]: arr = arr[..., np.newaxis]
# and then stack it along the third dimension (say `n` times; here `3`)
In [96]: arr_3d = np.dstack([arr]*3)
In [97]: arr_3d.shape
Out[97]: (2084, 2084, 3)
另一种方法是(即,如果您不希望将输入数组显式提升为 3D):
In [140]: arr_3d = np.dstack([arr]*3)
In [141]: arr_3d.shape
Out[141]: (2084, 2084, 3)
# sanity check
In [146]: arr_3 = np.dstack([arr[..., np.newaxis]]*3)
In [147]: arr_3.shape
Out[147]: (2084, 2084, 3)
In [148]: np.allclose(arr_3, arr_3d)
Out[148]: True
推荐阅读
- node.js - 在 mqtt 消息回调中处理 ArrayBuffer
- python - 如何更改日期和月份?
- google-cloud-platform - 使用气流将 gcs 文件上传到谷歌驱动器
- javascript - 找不到具有特定类的 htmlCollection 的索引号
- sql - 需要 SQL 查询才能使用第一个查询的结果
- amazon-web-services - 将 Node.js 应用程序部署到 Elastic Beanstalk 时出现 ETIMEDOUT 错误
- sql - Oracle SQL - 如果值是多选参数中任何字符串的子字符串
- data-science - SARIMAX 摘要上的警告是什么意思?它会严重影响我的预测性能吗?以及如何解决?
- html - 如何使用 jquery 展开/折叠表行?
- javascript - 承诺解决后如何调用函数?