NumPy 1.14 教學 – #09 ix_( )函數、線性代數(Linear Algebra)、重複(Repeat)、堆疊(Stack)

NumPy提供了一個很有趣的函數 ix_ ,一剛開始還有點看不太懂官方文件到底是想表示什麼?
仔細閱讀其他的範例之後發現原來 ix_ 函數的用途應該算是很多樣的。
此外還會介紹np.repeat、np.tile、np.hstack、np.vstack等用法。

本文#09應該算是 NumPy教學系列文的最後一篇。
不過,未來若有碰到什麼奇妙的用法也還是會一併補充上來。 😀

練習範例同步放置於GitHub:Learn NumPy – GitHub

ix_( )

ix_ function

首先來觀察 ix 函數的運作模式:
可以輸入多個陣列,本範例以輸入兩個一維陣列為例。
ix_ 函數會以第一個作為輸入參數的陣列轉置成 column vector 回傳。
column vector 就是只有一個column的向量(如下所示)。
$\begin{bmatrix}
1\\
3
\end{bmatrix}$

第二個陣列就會被作以 row vector 的形式輸出。
row vector 就是只有一個row的向量(如下所示)。
$\begin{bmatrix}
2 & 4\end{bmatrix}$

如果分別將 ix_( ) 的回傳值分別取出,就可以看出上述的差異。(請參考:下列程式範例第15行、輸出結果第14~18行)
但是如果直接使用一個變數來接收 ix_( ) 的回傳值,會收到一個tuple,這個tuple則是以第一、第二個輸入參數所轉換成的陣列依序組合而成的。(請參考:下列程式範例第8行、輸出結果第9~11行)

Output

 

ix_ 函數把輸入值轉換成這樣,可以用在哪些地方呢?

輸入參數可以是欲選取矩陣中特定資料的索引值,利用 ix_ 對目標矩陣選取需要的資料:
我想要選取上述 matrix_a 矩陣中的索引(1,2)、(1,4)、(3,2)、(3,4)四筆資料,
因此,對應至矩陣的row以及column的索引值可以分別處理成兩個向量:$\begin{bmatrix} 1&3 \end{bmatrix}$ 以及 $\begin{bmatrix} 2&4 \end{bmatrix}$
最後,就可以直接用 ix_ 的回傳值來選取資料!(請參考:下列程式範例第16行、輸出結果第3~5行)

Output

 

Linear Algebra

線性代數常用方法

這邊介紹一些較簡單的線性代數方法:矩陣相乘(matrix product)、矩陣內元素相乘(element-by-element multiplication)、轉置(transpose)、單位矩陣(identify matrix)

Output

 

Repeat / Stack

重複(重製/repeat, tile)、堆疊(hstack, vstack)

np.repeat(<a>, <repeats>, <axis>)
a:目標矩陣或陣列
repeats:輸入值可以是整數、陣列
axis:為整數,表示執行重製的軸向
將目標矩陣沿著設定的軸向(第一軸 axis = 0)進行重製。

np.tile(<a>, <repeats>)
a:目標矩陣或陣列
repeats:參數為一個tuple
將目標矩陣依 repeats 設定每個維度數值重複執行 n 次,同時沿著各個維度的方向重製。

np.hstack(<array>)
輸入參數內的陣列size必須一致,將輸入的陣列沿著水平方向合併後輸出。

np.vstack(<array>)
輸入參數內的陣列size必須一致,將輸入的陣列沿著垂直方向合併後輸出。

 

 




Andy Wang

站在巨人的肩膀上仍須戰戰兢兢!

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *