【发布时间】:2021-05-09 07:19:51
【问题描述】:
我有一个形状为 (84, 13, 1036800) 的 numpy 数组,我想向它添加一个长度为 1036800 的一维数组,以便形状变为 (84, 14, 1036800)。我尝试连接和堆栈选项,但不断收到此尺寸错误。
【问题讨论】:
-
新数组的形状必须为 (84,1,1036800)。
我有一个形状为 (84, 13, 1036800) 的 numpy 数组,我想向它添加一个长度为 1036800 的一维数组,以便形状变为 (84, 14, 1036800)。我尝试连接和堆栈选项,但不断收到此尺寸错误。
【问题讨论】:
您可以使用np.concatenate,但您应该先广播一维数组,将第一个轴乘以 84 次以适应形状。
a = np.random.randn(84, 13, 1036800)
b = np.random.randn(1036800)
print(a.shape, b.shape)
>>>
(84, 13, 1036800) (1036800,)
b_broadcasted = np.broadcast_to(b, [a.shape[0], 1, a.shape[2]])
print(b_broadcasted.shape)
>>>
(84, 1, 1036800)
np.concatenate([a, b_broadcasted], axis=1).shape
>>>
(84, 14, 1036800)
【讨论】:
np.tile()时结果是否相同