通过水平、垂直和对角线复制每个项目来复制 2d 矩阵 x

Replication 2d Matrix x by replicating each item horizontally, vertically and diagonally

我有这个代码:

somearray = np.array([[1,4,7],[8,9,3]])
# i tried this
print(np.tile(somearray,2))

我得到了这个结果:

[[1 4 7 1 4 7]
 [8 9 3 8 9 3]]

我尝试得到这个结果:

1 1 4 4 7 7 
1 1 4 4 7 7 
8 8 9 9 3 3 
8 8 9 9 3 3 

每个item都横向、纵向、对角复制,怎么办?

您可以使用 np.repeat 和 np.tile 来实现。请注意差异

np.repeat(np.repeat(somearray,2, axis=1),2,axis=0)

输出

array([[1, 1, 4, 4, 7, 7],
       [1, 1, 4, 4, 7, 7],
       [8, 8, 9, 9, 3, 3],
       [8, 8, 9, 9, 3, 3]])

选项 2

np.tile(somearray,(2,2))

输出

array([[1, 4, 7, 1, 4, 7],
       [8, 9, 3, 8, 9, 3],
       [1, 4, 7, 1, 4, 7],
       [8, 9, 3, 8, 9, 3]])

您尝试执行的操作称为上采样。您可以使用 np.repeat 函数:

somearray.repeat(2, axis=0).repeat(2, axis=1)