今天要來繼續介紹 NumPy 的應用,包括了 Slicing 索引,Copy, View 複製, Shape, Reshape, Concatenate 等等內容。
NumPy 中的矩陣,也可以透過像 list 一樣的方法去取出。
語法一樣也是 [start:end:step]
。
如圖,取出這個矩陣的第 1 個到第 4 個元素
import numpy as np
array1 = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(array1[1:5])
# 輸出
# [2 3 4 5]
在 2-D 的矩陣也可以使用 Slicing 來取出元素,如下程式為取出第一個 row 的 1-2 個元素。
import numpy as np
array1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(array1[1, 1:3])
# 輸出
# [6 7]
底下為取出第 0-1 個 row,並取出他們的第 1-2 個元素。
import numpy as np
array1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(array1[0:2, 1:3])
# 輸出
# [[2 3]
# [6 7]]
這兩個函式的差別在於,.copy()
是複製一個新的 array,所以改變 copy 後的 array 並不會改變到原本的 array,.view()
是給你看到原本的矩陣而已,所以改變的話會把原本的 array 也改變。我們看一下底下的例子會更清楚。
.copy()
:
底下 array1
為原本的 array,並且用 .copy()
函式來複製一個一樣的 array 給 x
,這時若改變 x
,並不會對原本的 array1
造成影響。
import numpy as np
array1 = np.array([1, 2, 3, 4])
x = array1.copy()
x[0] = 4
print(x) # [4 2 3 4]
print(array1) # [1 2 3 4]
.view()
:
底下 array1
為原本的 array,並且用 .view()
函式來把 array1
給 y
看見,這時若改變 y
,相當於改變了 array1
。
import numpy as np
array1 = np.array([1, 2, 3, 4])
y = array1.view()
y[0] = 4
print(y) # [4 2 3 4]
print(array1) # [4 2 3 4]
得到矩陣的 dimesions
使用 .shape
函式,可以得到現在這個 array 的 dimesions,像底下就代表這個 array 有 2 個 dimesions,並且每個 dimesions 有 4 個 element。
import numpy as np
array1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(array1.shape)
# 輸出
# (2, 4)
也可以透過這個函式調整 array 的維度,把它改為 4 x 2 的 array,他會直接改變原本的 array
import numpy as np
array1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
array1.shape = (4, 2)
print(array1)
# 輸出
# [[1 2]
# [3 4]
# [5 6]
# [7 8]]
調整 array 的維度,但不會改變原本的 array,而是創建一個副本。
import numpy as np
array1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
y = array1.reshape(4, 2)
print(array1)
# 輸出
# [[1 2 3 4]
# [5 6 7 8]]
print(y)
# 輸出
# [[1 2]
# [3 4]
# [5 6]
# [7 8]]
代號 | 數字 |
---|---|
Inf = inf = infty = Infinity = PINF | 正無限大 +∞ |
NINF | 負無限大 -∞ |
PZERO | 正 0 |
NZERO | 負 0 |
nan = NaN = NAN | 非數值 |
e | 自然數 e |
pi | π |
newaxis | None 的別稱 |
print(np.inf)
print(np.NINF)
print(np.PZERO)
print(np.NZERO)
print(np.nan)
print(np.e)
print(np.pi)
print(np.euler_gamma)
print(np.newaxis)
# 輸出
# inf
# -inf
# 0.0
# -0.0
# nan
# 2.718281828459045
# 3.141592653589793
# None
np.concatenate()
:如果需要把兩個 array 合併的時候,就可以使用這個函式。
a = np.array([1, 2, 3, 4])
b = np.array([5, 6, 7, 8])
print(np.concatenate([a, b]))
# 輸出
# [1 2 3 4 5 6 7 8]
NumPy 真的太多函式可以使用,今天就先暫時介紹到這邊了!明天再繼續。
待續...