【问题标题】:numpy.dstack for 3D arrays?numpy.dstack 用于 3D 数组?
【发布时间】:2020-05-08 15:24:29
【问题描述】:

np.dstack 对 2D 数组按预期工作,但由于某些原因,对于 3D 数组,它不是按最后一维堆叠的。

ND 数组的最后一维堆栈的正确方法是什么?

例子:

import numpy as np

#2D
a = np.zeros((2,2,1))
a.shape
(2, 2, 1)

np.dstack([a] * 3).shape
(2, 2, 3)

#3D
b = np.zeros((8,2,2,1))
b.shape
(8, 2, 2, 1)
np.dstack([b] * 3).shape
(8, 2, 6, 1)

【问题讨论】:

  • np.comcatenate 带有 axois 参数
  • @hpaulj 小错误:np.concatenateaxis
  • np.dstack 沿第三维连接。 stackoverflow.com/a/25117015

标签: python numpy


【解决方案1】:

如果您想将数组与自身堆叠,就像在您的示例中一样,您可以使用 np.repeat

b = np.zeros((8,2,2,1))
n_stacks = 3
np.repeat(b, n_stacks, axis=b.ndim-1).shape
(8, 2, 2, 3)

如果你想沿它们的最后一个维度堆叠两个不同的数组,你可以使用 np.concatenate

b = np.zeros((8,2,2,1))
c = np.ones((8,2,2,1))
np.concatenate((b,c),axis=b.ndim-1).shape
(8, 2, 2, 2)

【讨论】:

    猜你喜欢
    • 2023-01-09
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多