NumPy 1.14 教學 – #03 基本操作(加減乘除、矩陣乘法、取代)

開始學NumPy之前至少先熟悉Python基礎使用方法,這樣再來看NumPy才不會那麼吃力!
Python3 教學、筆記

本文將會介紹NumPy矩陣之間的加減乘除(包含矩陣乘法)、取代、屬性以及常用方法(dot, sum, min, max, mean, cumsum, sqrt, add, exp, …)!
本文章的練習檔同步存放於GitHub:Learn NumPy – GitHub

加、減、次方

基礎運算-1

加、減、次方的計算非常直覺好懂,分別使用『 + 、 – 、 ** 』就可以了。
例如:加、減、次方都可以直接做單一數值的同加、同減、次方。

Output

 

同除、同乘特定數

基礎運算-2

矩陣(matrix)同乘上某個特定純量(scalar)也很簡單,就直接相乘就好了!

Output

 

矩陣相乘

矩陣運算

$A=
\begin{bmatrix}
1 & 2 \\
3& 4
\end{bmatrix},\space
B=
\begin{bmatrix}
5 & 6 \\
7 & 8
\end{bmatrix}
$

矩陣乘法:
$A\times B=
\begin{bmatrix}
\begin{bmatrix} 1 \times 5 + 2 \times 7 \end{bmatrix} & \begin{bmatrix} 1 \times 6 + 2 \times 8 \end{bmatrix} \\
\begin{bmatrix} 3 \times 5 + 4 \times 7 \end{bmatrix} & \begin{bmatrix} 3 \times 6 + 4 \times 8 \end{bmatrix}
\end{bmatrix}
$

$=
\begin{bmatrix}
\begin{bmatrix} 5 + 14 \end{bmatrix} & \begin{bmatrix} 6 + 16 \end{bmatrix} \\
\begin{bmatrix} 15 + 28 \end{bmatrix} & \begin{bmatrix} 18 + 32 \end{bmatrix} \\
\end{bmatrix}
$

$=
\begin{bmatrix}
19 & 22 \\
43 & 50
\end{bmatrix}
$

矩陣相對應位置相乘:
$=
\begin{bmatrix}
1\times 5 & 2\times 6 \\
3\times 7 & 4\times 8
\end{bmatrix}=
\begin{bmatrix}
5 & 12 \\
21 & 32
\end{bmatrix}
$

Output

 

取代

取代

這個也很常用到喔,像是有時候要把矩陣裡面NaN的數值取代成0的時候就很好用!
舉例:判斷陣列元素值小於等於0的元素,把那些元素的數值取代成1

Output

 

陣列元素的型別

常犯錯誤

因為NumPy太好用了,導致有時候甚至會忽略兩個要做運算的陣列型別根本不符,最後就會出錯~哈
用下列例子給大家了解這種狀況:

Output

 

如果把上面範例第二行程式的 np.float 改成 np.int 就會出錯喔!
下列程式第11行:硬是用型別為int的矩陣加上一個型別為float的矩陣,肯定會出錯的吧!

Output

 

矩陣的屬性

常用方法-1

NumPy矩陣本身在初始化之後就內建一些好用的方法!
sum:矩陣加總
min:矩陣最小值
max:矩陣最大值
mean:矩陣平均值

Output

 

矩陣的一些方法

常用方法-2

贊助廣告

sum:axis=0或1  算是進階用法,可以指定要加總的維度是哪一個
cumsum:這是可以拿來對陣列值做出累計加總的效果,可以用在一維陣列上,數值就可以直接拿來畫出累計趨勢圖喔~

Output

 

常用方法-3

np.sqrt:矩陣內所有元素開平方根
np.exp:矩陣內所有元素進行Exponential function($e$)運算
np.add:矩陣或陣列相加

Output

 

還有很多常用的方法:

all, any, apply_along_axis, argmax, argmin, argsort, average, bincount, ceil, clip, conj, corrcoef, cov, cross, cumprod, cumsum, diff, dot, floor, inner, inv, lexsort, max, maximum, mean, median, min, minimum, nonzero, outer, prod, re, round, sort, std, sum, trace, transpose, var, vdot, vectorize, where

 

Andy Wang

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

6 thoughts on “NumPy 1.14 教學 – #03 基本操作(加減乘除、矩陣乘法、取代)

  • 2019-08-05 at 14:45:46
    Permalink

    第一個A*B矩陣算錯了吧

    Reply
  • 2020-10-06 at 22:55:02
    Permalink

    d等於b同乘以2

    d = b * 2
    print(“d=>{0}”.format(b))

    b->d

    Reply
    • 2020-10-09 at 21:50:21
      Permalink

      有時候邊寫邊舉例,結果改了卻忘記改範例程式碼…謝謝你!

      Reply
  • 2020-10-06 at 23:03:57
    Permalink

    加總每一列(row)

    print(“b.sum(axis=0)=>{0}”.format(b.sum(axis=1)))

    .sum(axis=0) 0->1

    Reply

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料