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,))
配列のストライドが許す限り、常に連続した配列が取得されるわけではない場合でも、ビューを取得します。