首页 > 解决方案 > 将 2d 数组堆叠到 3d numpy 数组的一部分

问题描述

我有一个 3d numpy 数组。

d = np.ones((3,2,2))

'''
array([[[1., 1.],
        [1., 1.]],

       [[1., 1.],
        [1., 1.]],

       [[1., 1.],
        [1., 1.]]])
'''

并希望将 2d 数组堆叠到 3d 数组的一部分上。

# tried
d[0] = np.vstack((d[0], np.array([1,3])))

我期望

array([[[1., 1.],
        [1., 1.]],
        [1., 3.]],

       [[1., 1.],
        [1., 1.]],

       [[1., 1.],
        [1., 1.]]])

但它发生了

ValueError: could not broadcast input array from shape (3,2) into shape (2,2)

我猜索引 3d 数组会返回整个数组的复制部分数组。
但仍然不知道如何使成为可能。


类似问题

3d numpy 空数组

d = np.empty((3,0,2))

d
# array([], shape=(3, 0, 2), dtype=float64)

尝试了与上述方法相同的方法,但这次是“空”数组。

d[0] = np.vstack( (d[0], np.array([1,3])) )

我期望

array([[[1., 3.],

       [],

       []]])

但它没有任何改变

print(d)
# []

标签: pythonarraysnumpy

解决方案


推荐阅读