改善数组操作的python性能

时间:2013-07-10 14:22:30

标签: python numpy gdal

我有一个python脚本,它读取两个tiff图像并找到唯一的组合,计算观察结果并将计数保存到txt文件。

您可以找到完整的脚本in www.spatial-ecology.net

结果是:

tif1

2 2 3

0 0 3

2 3 3

tif2 

2 2 3 

3 3 4

1 1 1

result

2 2 2

3 3 1

0 3 2

3 4 1

2 1 1

3 1 2

脚本运行正常。 这就是它的实现方式。

  1. 逐行读取(对于范围(行)中的irows :)以便不在内存中加载完整的图像(最终可以插入一个标记选项以读取10行10行)

  2. 通过数组创建一个元组

  3. 检查元组是否已存储在dic()

  4. 我的问题是: 在这种情况下哪些技巧可以加快这个过程?

    我测试过将结果保存在二维数组而不是dic()中,但它会减慢进程的速度。 我检查this link,也许python map函数可以提高速度。 是这种情况吗?

    提前致谢 朱塞佩

1 个答案:

答案 0 :(得分:2)

如果您需要一些关于性能的真实建议,您需要发布直接与您想要做的相关的代码部分。如果你不至少那样做我们能做的很少。也就是说,如果您在发现确切的低效率时遇到问题,我高度建议使用python的cProfile模块。用法如下:

import cProfile

def foo(*args, **kwargs):
    #do something

cProfile.run("foo(*args, **kwargs)")

这将打印代码的详细时间配置文件,让您知道代码的哪些步骤占用的时间最多。通常情况下,这两种方法要么被调用的次数要比调用它们要频繁得多,要么做一些愚蠢的额外处理,从而导致性能瓶颈。