Python-将大数组排序为多个

标签 python arrays

我正在使用一张 map ,该 map 被分成 750 x 750 编号的图 block 。它们存储在 JSON 文件中。我的目标是提取数据并将每个图 block 分割成单独的数组/ block 。

我已经让它工作了,但我是一个 python 初学者,代码真的很慢(它正在处理 500,000+ 个数字)。想知道是否有更快的方法可以完成同样的事情。

首先我将 json 数据拉入数组

with open("data.json") as data_file:
    data = json.load(data_file)
    arr = data["mapLayer"][0]["tiles"]

然后我遍历数组并根据它们的位置将它们分类为单独的 block 数组:

x=0
y=0 

for tile in arr:
    chunkPos = str(x/16) + "x" + str(y/16)
    chunks[chunkPos].append(tile)
    x += 1

    // reset x pos when it reaches map edge
    if x == 750
        x=0
        y=y+1

最佳答案

您可以将图 block 存储在 numpy 数组中,而不仅仅是使用 4 维 reshape 数组 (我假设 256 是你的 block 大小)

import numpy as np

 with open("data.json") as data_file:
    data = json.load(data_file)
    arr = np.array(data["mapLayer"][0]["tiles"])


arr = np.reshape(arr, (750, 1,750, 256))

关于Python-将大数组排序为多个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54650948/

相关文章:

python - 使用 toPandas() 方法将 spark 数据帧转换为 Pandas 数据帧时会发生什么

java - 如何检查文本段落是否包含字符串数组中可用的单词?

python - 如何独立于父 python 脚本调用外部应用程序(基于 Windows)?

python - 使用正则表达式从目录中解析文本

python - 以简单的方式将多个参数从数组传递给函数

arrays - 递归消除元胞数组中的数字

javascript - jQuery 获取所有带有名称的复选框

javascript - 使用 Lodash 将对象键转换为具有键值数量的数组

php - 如何使用服务器端脚本生成网页的屏幕截图?

python - 类型错误 : cannot unpack non-iterable int object