澄清NumPy 中的Flatten 和Ravel 函數
NumPy 是一個強大的數值運算Python 庫,提供了兩個看似相似的函數:flatten 和拉威爾。兩者的目的都是將多維數組轉換為一維數組。然而,它們之間存在著微妙的區別。
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>
應用flatten 函數結果:
<code class="python">print(y.ravel()) [1 2 3 4 5 6 7 8 9]</code>
應用>類似地,ravel 函數產生相同的輸出:
主要差異
reshape 函數使用 (-1, ) 作為參數可以在某些場景中使用。即使步幅允許,它也會努力產生數組的視圖,即使生成的數組不連續。
摘要
Flatten 和 ravel 都是用來將多維 NumPy 陣列展平為一維。 Flatten 建立記憶體副本,而 ravel 提供視圖。 Ravel 速度更快,但需要仔細考慮修改,特別是在優化效能時。 Reshape((-1,)) 可在特定情況下使用,以最佳化記憶體使用和效能。以上是## Flatten 與 Ravel:何時使用每個 NumPy 函數以及為什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!