ホームページ >バックエンド開発 >Python チュートリアル >**Flatten と Ravel: どの NumPy 関数を使用すべきか?**
Numpy の Flatten 関数と Ravel 関数の違いを理解する
numpy ライブラリには、多次元配列を 1 つに変換するための 2 つのメソッド flatten と ravel が用意されています。 -次元配列。しかし、疑問が生じます: なぜ同じタスクを実行する 2 つの異なる関数があるのですか?
同一の出力、異なる動作
flatten と ravel はどちらもすべての要素のリストを返します。以下に示すように、元の配列では次のようになります。
<code class="python">import numpy as np y = np.array(((1,2,3),(4,5,6),(7,8,9))) print(y.flatten()) [1 2 3 4 5 6 7 8 9] print(y.ravel()) [1 2 3 4 5 6 7 8 9]</code>
キーの違い
決定的な違いは、関数が返された配列を処理する方法にあります。 Flatten は常に元の配列のコピーを作成しますが、ravel は可能な限り元の配列のビューを作成します。
Ravel の利点
Ravel は、多くの場合 flatten より高速です。新しい配列にメモリを割り当てる必要はありません。さらに、ravel から返される配列を変更すると、その変更は元の配列に反映されます。これは、特定の状況では有利になる可能性があります。
Ravel に関する注意
ただし、ravel については注意することが重要です。返された配列を元の配列のビューとして表示できない場合、ravel はコピーを作成します。さらに、ravel によって返された配列を変更すると、元の配列に予期しない副作用が発生する可能性があります。
結論
flatten と ravel の両方を使用して、多次元配列を 1 つに変換できます。 -次元配列。 Flatten は常にコピーを返しますが、ravel は可能な限りビューを返します。特定のニーズに適した機能を選択するには、動作の違いを理解することが重要です。
以上が**Flatten と Ravel: どの NumPy 関数を使用すべきか?**の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。