重新分配/擦除numpy数组与循环中的新分配

时间:2012-08-06 18:13:03

标签: arrays memory-management numpy

在我的程序中,我需要在一个循环超过1000次的函数中使用大约500x500到1500x1500的数组。在每次迭代中,我需要从一个具有相同形式的数组开始(其尺寸在所有迭代中都是固定的)。初始值为:

[0 0 0 ... 1]
[0 0 0 ... 1]
....

但是,数组的内容将在循环内修改。将数组“重置”为这种格式的最有效方法是什么,这样我每次都可以将相同的数组传递给函数,而不必每次都分配一组新的内存? (我知道修改过的行的范围)

我试过了:

a[first_row_modified:last_row_modified,:] = 0.
a[first_row_modified:last_row_modified,:-1] = 1.

但每次使用以下内容创建新数组所需的时间大致相同:

a = zeros((sizeArray, sizeArray))
a[:,-1] = 1.

有没有更快的方法来有效地“擦除”数组并将最后一列更改为1?我认为这类似于这个问题clearing elements of numpy array,虽然我的数组没有改变大小,但我没有看到对前面提到的问题的确切答案。

1 个答案:

答案 0 :(得分:0)

没有;我认为你这样做的方式和它一样快。