7

余分なコピーなしでNumPy多次元配列を使用して最小/最大インプレース割り当てを実行することは可能ですか?

と言うab、2つの2D numpy配列でありa[i,j] = min(a[i,j], b[i,j])、すべてiとに必要jです。

これを行う1つの方法は次のとおりです。

a = numpy.minimum(a, b)

しかし、ドキュメントによるとnumpy.minimum、新しい配列を作成して返します。

numpy.minimum(x1、x2 [、out])
配列要素の要素ごとの最小値。
2つの配列を比較し、要素ごとの最小値を含む新しい配列を返します。

したがって、上記のコードでは、新しい一時配列(の最小値ab)を作成し、それをに割り当ててa破棄しますよね?

min-resultがインプレースにa.min_with(b)割り当てられるようにする方法はありますか?a

4

1 に答える 1

11

numpy.minimum()オプションの3番目の引数を取ります。これは出力配列です。aそこで指定して、その場で変更することができます。

In [9]: a = np.array([[1, 2, 3], [2, 2, 2], [3, 2, 1]])

In [10]: b = np.array([[3, 2, 1], [1, 2, 1], [1, 2, 1]])

In [11]: np.minimum(a, b, a)
Out[11]: 
array([[1, 2, 1],
       [1, 2, 1],
       [1, 2, 1]])

In [12]: a
Out[12]: 
array([[1, 2, 1],
       [1, 2, 1],
       [1, 2, 1]])
于 2013-01-20T19:13:38.007 に答える