2

列ごとにループ内でnumpy配列を変更する方法はありますか?

これは、次のようなコードで実行できると思います。

import numpy as n

cnA=n.array([[10,20]]).T
mnX=n.array([[1,2],[3,4]])
for cnX in n.nditer(mnX.T, <some params>):
    cnX = cnX+cnA

を取得するには、どのパラメータを使用すればよいmnX=[[10,23],[12,24]]ですか?

次のコードを使用して問題を解決できることを認識しています。

cnA=n.array([10,20])
mnX=n.array([[1,2],[3,4]])
for col in range(mnX.shape[1]):
    mnX[:,col] = mnX[:,col]+cnA

ただし、python では、インデックスではなく、変更されたオブジェクトをループするため、問題は、(インプレースで変更する必要がある) 列を直接ループすることは可能ですか?

4

1 に答える 1

4

ご存知のように、私たちの中には Python で、必要に応じてオブジェクトを変更せずにインデックスを反復処理する人もいます。NumPy では、原則として、他に方法がない限り、明示的に反復しません。問題の場合、最も簡単な方法は、反復をスキップしてブロードキャストに依存することです。

mnX += cnA

反復を主張する場合、転置された配列を反復するのが最も簡単だと思います。

for col in mnX.T:
    col += cnA[:, 0].T
于 2013-07-11T13:54:55.093 に答える