391
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つの異なる機能の必要性は何ですか.

4

3 に答える 3

481

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

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