首页 > 解决方案 > 如何更改现有数组的形状,同时保持内容居中并用 0 填充新空间?

问题描述

我使用这行代码创建了一个 numpy 矩阵:

map = np.random.randint(3, size=(7, 7))

如何将矩阵的形状更改为 9x9 矩阵,同时仍保留矩阵中的内容?我希望内容以 9x9 矩阵为中心。

根据评论请求,这里是一个初始矩阵的示例,后跟所需的输出。

最初的:

[[1 2 1 1 2 2 1]
 [1 0 2 2 0 2 0]
 [2 0 2 1 1 0 2]
 [2 2 2 2 0 1 2]
 [1 1 2 1 0 0 1]
 [2 2 1 1 1 2 1]
 [1 2 0 0 2 2 0]]

输出:

[[0 0 0 0 0 0 0 0 0]
 [0 1 2 1 1 2 2 1 0]
 [0 1 0 2 2 0 2 0 0]
 [0 2 0 2 1 1 0 2 0]
 [0 2 2 2 2 0 1 2 0]
 [0 1 1 2 1 0 0 1 0]
 [0 2 2 1 1 1 2 1 0]
 [0 1 2 0 0 2 2 0 0]
 [0 0 0 0 0 0 0 0 0]]

如您所见,初始矩阵位于新的 9x9 矩阵的中心。

标签: python

解决方案


首先创建你的 7x7 矩阵:

map7 = np.random.randint(2, size=(7, 7))

然后,如果您希望 9x9 矩阵中的所有零都使用:

map9 = np.zeros((9,9), dtype=int)

然后将您的矩阵放在新创建的矩阵中

map9[1:8,1:8] = map7

推荐阅读