提高Python迭代性能

时间:2015-11-15 13:29:40

标签: python performance iteration

所以我一直在阅读列表推导,地图和生成器作为迭代的快速方法,但所有示例都是从现有数组生成一个新数组。

在我的特定情况下,我想更新现有二维数组的区域的值。有人可以帮助我理解如何将这些快速迭代器之一应用于我的特定情况吗?

以下是对相关代码的精炼:

buffer = [[0 for x in xrange(buffer_width)] for x in xrange(buffer_height)]

offset_x = 10
offset_y = 10

width = len(data)
height = len(data[0])

for x in range(0, width, 1):                                                                          
    for y in range(0, height, 1):
        bx = int(offset_x + x)
        by = int(offset_y + y)

        buffer[bx][by] = data[x][y] | buffer[bx][by]

尔加!对不起代码格式错误;显然从手机发帖并不是一个好主意

编辑:抱歉初始代码错误,我编辑它更清楚。希望很明显我将一个小的二维数组的值合并到一个更大的二维数组的现有值

1 个答案:

答案 0 :(得分:0)

<强> 1。纯蟒蛇

for x in xrange(offset_x, width):
    for y in xrange(offset_y, height):
        data[y][x] = buffer[y-offset_y][x-offset_x]

<强> 2。 numpy的

data[offset_y-1:,offset_x-1:] = buffer

我认为在大型数据集的情况下,numpy会更快。