NumPyのflatten関数とravel関数の違いは何ですか?質問する

NumPyのflatten関数とravel関数の違いは何ですか?質問する
import numpy as np
y = np.array(((1,2,3),(4,5,6),(7,8,9)))
OUTPUT:
print(y.flatten())
[1   2   3   4   5   6   7   8   9]
print(y.ravel())
[1   2   3   4   5   6   7   8   9]

どちらの関数も同じリストを返します。では、同じジョブを実行する 2 つの異なる関数が必要なのはなぜでしょうか。

ベストアンサー1

現在の API は次のとおりです。

  • flatten常にコピーを返します。
  • ravel可能な限り、元の配列の連続したビューを返します。これは印刷された出力には表示されませんが、ravel によって返された配列を変更すると、元の配列のエントリが変更される可能性があります。flatten から返された配列のエントリを変更しても、これは発生しません。ravel はメモリがコピーされないため、多くの場合高速になりますが、返される配列を変更する場合はより注意する必要があります。
  • reshape((-1,))配列のストライドが許す限り、常に連続した配列が取得されるわけではない場合でも、ビューを取得します。

おすすめ記事