【问题标题】:Python: Add elements to second axis of numpy array in a loopPython:在循环中将元素添加到numpy数组的第二个轴
【发布时间】:2017-12-12 03:49:29
【问题描述】:

link 建议我们可以使用 Python 列表向其中添加元素,并使用 np.array 将其转换为 numpy 数组,长度未知,如下所示:

a = []
for x in y:
    a.append(x)
a = np.array(a)

假设x 是一个形状为 (h,w) 但 h 和 w 未知的numpy.ndarray,我们如何在循环中将元素添加到 ndarray a 的第二轴以使 a 变为 ( h,w,d) 其中 d 是迭代次数?

我知道我们可以使用dstack 将元素添加在一起成为 (h,w,d),但我不太确定如何循环执行此操作。

【问题讨论】:

  • 也可以使用np.stack。使用默认的axis 值,它的行为与np.array 非常相似,但您可以指定其他axis 值。

标签: python numpy


【解决方案1】:

您可以做类似的事情,但将 x 用作 2D numpy 数组。也就是说,如果您事先不知道数组的数量,您可以将它们收集到一个列表中,然后一步将它们转换为单个 3D 数组。该代码看起来与您的示例非常相似:

gen2d = (i*np.ones((2,2)) for i in range(random.randint(1, 10))) # a generator of unknown N

a = []
for x in gen2d:
    a.append(x)
a = np.dstack(a)

a.shape  # (2, 2, 7)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 2020-06-06
    相关资源
    最近更新 更多