1. ホーム
  2. python

[解決済み] コピーによるNumpy配列の代入

2022-08-15 02:17:27

質問

例えば numpy 配列 A が欲しい、そして numpy 配列 B を同じ要素で構成します。

以下の(後述する)メソッドの違いは何ですか?また、追加でメモリが確保される場合と、されない場合がありますか?

  1. B = A
  2. B[:] = A (と同じ B[:]=A[:] ?)
  3. numpy.copy(B, A)

どのように解決するのですか?

3つのバージョンはすべて異なることを行います。

  1. B = A

    これは新しい名前をバインドします B という名前の既存のオブジェクトに A . その後、それらは同じオブジェクトを参照するので、もしその場で1つを修正すれば、もう1つを通してもその変更がわかります。

  2. B[:] = A (同じ B[:]=A[:] ?)

    これは A の値を既存の配列 B . これが動作するためには、2つの配列は同じ形状である必要があります。 B[:] = A[:] は同じことをします(ただし B = A[:] はもっと1のようなことをするはずです)。

  3. numpy.copy(B, A)

    これは合法的な構文ではありません。おそらく B = numpy.copy(A) . これは 2 とほとんど同じですが、新しい配列を作成します。 B の配列を再利用するのではなく、新しい配列を作成します。もし他に以前の B の値への他の参照がない場合、最終結果は 2 と同じになりますが、コピー中に一時的に多くのメモリを使用することになります。

    あるいは、あなたが意味する numpy.copyto(B, A) という意味なのでしょうか?