@KennyTM 的回答非常巧妙,确实适合您的情况,但作为替代方案,可以为扩展数组提供更多灵活性,请尝试np.repeat:
>>> a = np.array([[1, 5, 9],
[2, 7, 3],
[8, 4, 6]])
>>> np.repeat(a,2, axis=1)
array([[1, 1, 5, 5, 9, 9],
[2, 2, 7, 7, 3, 3],
[8, 8, 4, 4, 6, 6]])
所以,这完成了沿一个轴重复,沿多个轴(如您所愿),只需嵌套 np.repeat 调用:
>>> np.repeat(np.repeat(a,2, axis=0), 2, axis=1)
array([[1, 1, 5, 5, 9, 9],
[1, 1, 5, 5, 9, 9],
[2, 2, 7, 7, 3, 3],
[2, 2, 7, 7, 3, 3],
[8, 8, 4, 4, 6, 6],
[8, 8, 4, 4, 6, 6]])
您还可以更改任何初始行或列的重复次数。例如,如果您希望除最后一行之外的每一行重复两次:
>>> np.repeat(a, [2,2,1], axis=0)
array([[1, 5, 9],
[1, 5, 9],
[2, 7, 3],
[2, 7, 3],
[8, 4, 6]])
这里,当第二个参数是 list 时,它指定逐行(在本例中为行,因为 axis=0)对每一行重复。