陣列形狀操作-扁平化( 初步學習 tcy)
阿新 • • 發佈:2019-01-29
陣列形狀操作-扁平化 2018/11/26 ======================================================================== 1.函式: # 與reshape 將1D轉xD陣列的運算過程相反的運算通常稱為扁平化 np.ravel(a, order='C') # 返回新1D陣列(不更改原陣列) a.ravel([order]) # 如沒必要ravel不產生源資料副本 a.flatten(order='C') # 類似於ravel 總是返回1D資料的副本 a.flat # 陣列一維迭代器 ======================================================================== 2.例項 a = np.array([[1, 2, 3], [4, 5, 6]]) a.ravel() # array([1, 2, 3, 4, 5, 6]) a.ravel('F') # array([1, 4, 2, 5, 3, 6]) a.flatten() # array([1, 2, 3, 4, 5, 6]) it=a.flat #陣列一維迭代器 [i for i in a.flat] #[1, 2, 3, 4, 5, 6] ======================================================================== # 3說明: # C和Fortran順序{'C','F','A','K'} # # 1)控制資料在記憶體中的佈局。預設陣列按行優先順序建立 # 'C'以行為主順序;每行資料存放在相鄰記憶體位置; # 'F'以列為主順序;每列資料存放在相鄰記憶體位置;矩陣全都是列優先 # 如果a是記憶體中的Fortran 連續記憶體,則'A'表示按列主要順序變平,否則為行內主要順序。 # 'K'表示按照元素在記憶體中出現的順序將a平坦化。 # 2)二維或高維陣列重塑過程 # C和Fortran序的關鍵區別就是維度的行進順序: # Cl行優先順序: 先經過更高的維度(例如,軸1 會先於軸0被處理)。 # Fortran/ylj優先順序:後經過更高的維度(例如,軸0會先於軸l被處理)。 ========================================================================