1.前言 => 2.為什麼要用 Array? => 3.Array 的基本操作 => 4.多維 Array 的操作
=> 5.Array 中的常用function => 6.附錄
1.前言
一陣子沒更新了...人氣直直落
也深刻的瞭解到 我寫的大部分東西
其實沒什麼價值....不然早就被人家翻遍了
也許只有對我有價值吧
忘了的東西可以自己記錄在這邊
實際上 在這邊的東西
網路上google一下就有完整的介紹 有的還有影音XD
這讓我蠻洩氣的
以為只要po些文 就有點人氣 ~~哈哈
不過~~
就慢慢來吧
等我寫到 更有深度的東西時
我想 就會漸漸有更多人想要看吧~~
2.為什麼要用 Array?
其實py裡面 最直觀的資料格式就是 list 了吧
直接打 [] 就可以把你要的資料塞進去
詳見 :
[純教學系列文3]在"Python"中 基本的"資料格式"
但新手小白 在寫code的時候
發現 list 的計算 其實並不直覺(可能習慣用R了...)
例如 :
x = [3,6,9]
x*3
##我想把 x 裡面的每個元素都乘 3 變成 [9,18,27]
##結果跑出來的是...
## py把裡面的元素複製 3遍....
## 那要怎麼用才能達到我想要的呢?
## 一個很土炮的方法就是用 for
import numpy as np
x = [3,6,9]
for ind in np.arange(3):
x[ind]=x[ind]*3
x
## 但這樣太弱了吧~~
## 所以就到了 Array 登場的時候了
3.Array 的基本操作
要產生一個 Array 簡單的方法就是 np.array( 這裡輸入 list )
x= np.array( x ) ## x 就是剛剛的 list 也可以直接打 np.array( [3,6,9] )
x*3 ## 然後就可以簡單計算囉
## 比剛剛的簡單多了吧
## 接著說 如果我不要全部都乘 3
## 我想要第一個乘 2 第二個乘 3 第三個乘 4
## 如下
import numpy as np
x= np.array([3,6,9])
y= np.array([2,3,4])
x*y
## 是不是很簡單
#另外 array和 list 想叫出你想要的元素時 方法是很類似的
#例如
print(x)
x[1] # index 從零開始
x[-1] # 最後一個元素
print(x[1],"\n",x[-1])
### 可以用類似序號的方式來使用
x[0:2] # 叫出 第一第二個
x[:2] # 不指定開始 (也就是從第一個開始)
x[2:] # 不指定結束
x[:] # 通通都叫出來啦
## 結果如下~~ 請大家自己對對看囉
## 還是要記得 index 是從 0 開始... 然後序列的最後一個數字 不會被叫出來....
## 最後還有進階一點的叫法 (布林)
print(x>3) # 利用布林運算
x[x>3] # 叫出大於 3 的元素
4.多維 Array 的操作
array 可以還有一個好處就是~~
我們可以做出多維的矩陣來!!
寫法是這樣的:
m = np.array( [ [1,2,3],[4,5,6] ] )
## 用[ ] 包住 每一行的元素 [ ]
## 新手小白每次都會在外面少打一個 [ ]
## 這是一個 2乘3 的矩陣喔
## 意思是 有 2個 row 和 3 個 column
## 再來叫出我想要的元素
#用shape指令 可以確認維度
print(np.shape(m)) ## 這是2*3的矩陣
## 類似一維的 只是中間加了 ","
## 記得是先 row 後 column
print(m[0,0]) ## 1st row ,1st column
print(m[1,2]) ## laster
## 其他寫法也類似一維的
print(m[:,0]) # 1st column
print(m[0,:]) # 1st row
print(m[:]) # all
## 以上 也請大家對對看吧~~
5.Array 中的常用function
array 的 function 很多
我只挑幾個 我覺得比較容易用到的
1. np.reshape() ## 把矩陣的行列改變
例如:
#### 生成二維矩陣
a=np.array([1,2,3,4,5,6,7,8,9,10,11,12]) ## 本來是1*1
b=np.reshape(a,(2,-1)) # 利用 reshape 改成 2*2
#### 這邊的參數很重要 (2,-1)
#### 可以想成 我要生成 2* X 的矩陣 X 是未知的
#### X 寫 -1 的話 Python 會自己抓 X 是多少~~
np.shape(b) ## 這邊X是 6
print(b) ## 所以是 2*6 矩陣
#### 另外
#### 參數 打 (2,2,-1) 的話 也可以生成三維的 但這邊就不示範囉
2.np.eye() ## 單位矩陣
### 對角線是 1 的矩陣
np.eye(3) ## 運算時很常用
3. m.T #轉置矩陣 m 是我本來生成的矩陣 後面加T 就好!!
4. a.I ##反矩陣 同轉置矩陣 原本的矩陣後面加 I 就好
a=np.mat(np.eye(2,2)*0.5); a.I ## 因為要 n*n 的矩陣這邊重新生成
5. dot ##矩陣乘法
a=np.array([ [1,2,3],[1,1,1],[1,1,1] ])
b=np.array( [ [1,2,3] ]).T
print(np.shape(a), np.shape(b)) ## 相乘的話 維度要對好
print(a); print(b) ; ## 這邊是 3*3 對上 3*1
ab=np.dot(a,b) ## 矩陣乘法
print('\n'); print(ab)
## 矩陣乘完之後就是 3*1囉 可以手算看看對不對
6.附錄
array 當然還有很多其他的 Function 可以使用
詳細可以參閱 https://docs.scipy.org/doc/numpy/reference/arrays.ndarray.html
另外 我還學到了 mat 這種矩陣的形式( 如果你有仔細看這篇的話 我有用到過 )
這在網上google 了一下 這兩種是有差異的
簡單來說 array 的運算比較複雜(畢竟是多維度的) 而mat 比較簡單
但 mat 做得到的 array 都做得到
所以可以用array為主 只不過要多熟悉指令囉
今天就更新到這邊 感謝觀看 掰掰~~
留言列表