如何将网格世界的大小增加1000倍

时间:2017-03-19 22:17:18

标签: python

我正在使用我必须输入环境地图的程序。输入表单如下所示。

self.map=[   [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
                        [1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1],
                        [1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
                        [1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 1, 1],
                        [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1],
                        [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]

我希望将给定结构的大小增加千倍并保持结构的形式。增加结构尺寸后将为18000x6000。代码看起来像this

有人可以建议我实现这个或任何替代方式的方法。

2 个答案:

答案 0 :(得分:1)

尝试np.repeat两次 - 每个轴一次。不是最漂亮,但应该工作。所以像这样:

map_array = np.array(self.map)
map_array = np.repeat(map_array, 1000, axis=0)
map_array = np.repeat(map_array, 1000, axis=1)

答案 1 :(得分:1)

如果你真的想使用Python的列表(numpy的数组更适合大型矩阵)你可以使用

repeatfactor = 1000
mat = self.map  # copy reference, not data
m = len(mat)
n = len(mat[0])
newmatrix = [[mat[r % m][c % n] 
    for c in range(n * repeatfactor)]
    for r in range(m * repeatfactor)]