我有一个n维的numpy数组:(3, 3, 3, 64)
。我想通过插入零来增加轴2的计数,以便新形状为(3, 3, 4, 64)
。
如何插入零来增加numpy数组的给定轴值?
答案 0 :(得分:3)
创建一个与输入形状相同的零数组,但第三个轴的长度与填充长度相同,对于我们的情况为1
,并沿同一轴与第三轴连接输入数组)。对于连接,我们可以使用np.concatenate
或np.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