1. ホーム
  2. python

[解決済み] Numpyのarray()関数とasarray()関数の違いは何ですか?

2022-03-25 04:55:42

質問

Numpyの array() asarray() 関数はありますか?どんな時にどちらかを使うべきですか?私が思いつく限りの入力に対して、これらは同一の出力を生成するようです。

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

他の質問が、この質問にリダイレクトされているため asanyarray または 他の配列生成ルーチン ということで、それぞれが何をするのか、簡単にまとめておくとよいでしょう。

主な違いは、入力を変更せずに返す場合と、コピーとして新しい配列を作る場合の違いです。

array は、コピーするタイミングを決めるフラグなど、さまざまなオプションを提供します(他のほとんどの関数は、これを薄く包んでいます)。完全な説明は、ドキュメントと同じくらい時間がかかるだろう ( 配列の作成 しかし、簡単に説明すると、次のような例があります。

仮定 andarray であり、かつ mmatrix であり、両者とも dtypefloat32 :

  • np.array(a)np.array(m) は両方をコピーします。これはデフォルトの動作だからです。
  • np.array(a, copy=False)np.array(m, copy=False) をコピーします。 m でなく a というのも mndarray .
  • np.array(a, copy=False, subok=True) そして np.array(m, copy=False, subok=True) はどちらもコピーしません。 mmatrix のサブクラスである ndarray .
  • np.array(a, dtype=int, copy=False, subok=True) は両方をコピーします。 dtype は互換性がありません。

その他の関数のほとんどは array で、コピーするタイミングを制御します。

  • asarray : 入力が互換性のあるものであれば、コピーされずに返されます。 ndarray ( copy=False ).
  • asanyarray : 入力が互換性のあるものであれば、コピーされずに返されます。 ndarray のようなサブクラスか matrix ( copy=False , subok=True ).
  • ascontiguousarray : 入力が互換性のあるものであれば、コピーされずに返されます。 ndarray を連続したC言語の順序で表示します ( copy=False , order='C') .
  • asfortranarray : 入力が互換性のあるものであれば、コピーされずに返されます。 ndarray をFortranの連続した順序で実行します ( copy=False , order='F' ).
  • require : 指定された要求文字列と互換性がある場合、入力はコピーされずに返されます。
  • copy : 入力は常にコピーされます。
  • fromiter : 入力はイテラブルとして扱われます(したがって、例えば、イテレータの要素から配列を構築することができ、代わりに object イテレータを持つ配列)、常にコピーされます。

また、次のような便利な関数もあります。 asarray_chkfinite (と同じコピールール asarray しかし ValueError がある場合は nan または inf の値) のようなサブクラス用のコンストラクタがあります。 matrix やレコード配列のような特殊な場合、そしてもちろん実際の ndarray コンストラクタ (バッファ上のストライドから直接配列を作成することができます) を使用します。