0

私のプログラムでは、何千回もループする関数内で、およそ 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に変更するより速い方法はありますか? これはこの質問に似ていると思いますが、 numpy array の要素をクリアしますが、配列のサイズは変更されず、以前に尋ねられた質問に対する決定的な答えはわかりませんでした。

4

1 に答える 1

0

いいえ; 私はあなたがそれをしている方法はそれが得るのと同じくらい速いと思います。

于 2012-08-06T18:16:56.837 に答える