沿给定轴将多维零数组插入NumPy数组

时间:2017-07-12 17:48:21

标签: numpy

我有一个n维的numpy数组:(3, 3, 3, 64)。我想通过插入零来增加轴2的计数,以便新形状为(3, 3, 4, 64)

如何插入零来增加numpy数组的给定轴值?

1 个答案:

答案 0 :(得分:3)

创建一个与输入形状相同的零数组,但第三个轴的长度与填充长度相同,对于我们的情况为1,并沿同一轴与第三轴连接输入数组)。对于连接,我们可以使用np.concatenatenp.dstack(因为它的第三个轴)。

因此,实施将是 -

z = np.zeros((3, 3, 1, 64),dtype=a.dtype)
out = np.concatenate((a,z),axis=2) # Or np.dstack((a,z))

示例运行 -

In [182]: a = np.random.randint(11,99,(3, 3, 3, 64)) # Array with all nonzeros

In [183]: z = np.zeros((3, 3, 1, 64),dtype=a.dtype)

In [184]: out = np.concatenate((a,z),axis=2)

In [185]: (out[:,:,-1,:]==0).all()
Out[185]: True

In [186]: out.shape
Out[186]: (3, 3, 4, 64)

# Another way to verify
In [187]: (out==0).sum()
Out[187]: 576

In [188]: 3*3*64
Out[188]: 576