ホームページ  >  記事  >  バックエンド開発  >  ## Flatten と Ravel: 各 NumPy 関数をいつ使用するか、そしてなぜ使用するか?

## Flatten と Ravel: 各 NumPy 関数をいつ使用するか、そしてなぜ使用するか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-28 23:14:30989ブラウズ

## Flatten vs. Ravel: When to Use Each NumPy Function and Why?

NumPy の Flatten 関数と Ravel 関数を明確にする

数値演算用の強力な Python ライブラリである NumPy は、一見似ている 2 つの関数、 flatten と Ravel を提供します。解ける。どちらも多次元配列を 1 次元配列に変換することを目的としています。ただし、それらの間には微妙な違いが存在します。

Flatten と Ravel の動作

次の NumPy 配列を考えてみましょう:

<code class="python">import numpy as np
y = np.array(((1,2,3),(4,5,6),(7,8,9)))</code>

flatten 関数の適用結果は次のようになります:

<code class="python">print(y.flatten())
[1   2   3   4   5   6   7   8   9]</code>

同様に、ravel 関数は同じ出力を生成します:

<code class="python">print(y.ravel())
[1   2   3   4   5   6   7   8   9]</code>

主な違い

どちらの関数も同じものを返します

  • メモリ コピーとビュー: Flatten は常に元の配列のコピーを生成し、明確に別個のデータを作成します。構造。対照的に、ravel は主に元の配列のビューを提供し、同じ基礎となるデータを共有します。この違いは、出力配列を変更するときに明らかになります。 flatten によって返される配列への変更は元の配列に影響しませんが、ravel の出力への変更は元の配列を変更する可能性があります。
  • パフォーマンスの考慮事項: Ravel は通常、 flatten より高速です。新しいメモリコピーを作成する必要はありません。ただし、変更が元の配列に誤って影響を与える可能性があるため、ravel によって返された配列を変更する場合は注意が必要です。
  • 特殊なケース: flatten または ravel の代わりに、(-1, ) を引数として特定のシナリオで使用できます。結果として得られる配列が連続していない場合でも、ストライドが許す限り配列のビューを生成しようとします。

概要

Flatten と ravel は両方です。多次元の NumPy 配列を 1 次元に平坦化するために使用されます。 Flatten はメモリ コピーを作成し、ravel はビューを提供します。 Ravel の方が速いですが、特にパフォーマンスを最適化する場合、変更には慎重な考慮が必要です。 Reshape((-1,)) は、メモリ使用量とパフォーマンスを最適化するために特定のケースで使用できます。

以上が## Flatten と Ravel: 各 NumPy 関数をいつ使用するか、そしてなぜ使用するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。