Numpy n 維陣列 ndarray

numpy 中的核心資料結構是 ndarrayn 維陣列的簡稱 )。ndarrays 是

  • 同類的(即它們包含相同資料型別的專案)
  • 包含固定大小的專案(由形狀給定, n 個正整數的元組,指定每個維度的大小)

一維陣列:

x = np.arange(15)
# array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
x.shape
# (15,)

二維陣列:

x = np.asarray([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14]])
x
# array([[ 0, 1, 2, 3, 4],
# [ 5, 6, 7, 8, 9],
# [10, 11, 12, 13, 14]])
x.shape
# (3, 5)

三維:

np.arange(12).reshape([2,3,2])

要初始化陣列而不指定其內容,請使用:

x = np.empty([2, 2])
# array([[ 0., 0.],
# [ 0., 0.]])

資料型別猜測和自動轉換

預設情況下,data-type 設定為 float

x = np.empty([2, 2])
# array([[ 0., 0.],
# [ 0., 0.]])

x.dtype
# dtype('float64')

如果提供了一些資料,numpy 會猜測資料型別:

x = np.asarray([[1, 2], [3, 4]])
x.dtype
# dtype('int32')

請注意,在進行賦值時,numpy 會嘗試自動轉換值以適應 ndarray 的資料型別

x[1, 1] = 1.5 # assign a float value
x[1, 1]
# 1 
# value has been casted to int
x[1, 1] = 'z' # value cannot be casted, resulting in a ValueError

陣列廣播

另請參見廣播陣列操作

x = np.asarray([[1, 2], [3, 4]])
# array([[1, 2],
         [3, 4]])
y = np.asarray([[5, 6]])
# array([[5, 6]])

在矩陣術語中,我們將有一個 2x2 矩陣和一個 1x2 行向量。我們仍然可以做一筆錢

# x + y
array([[ 6, 8],
       [ 8, 10]])

這是因為陣列 y拉伸到:

array([[5, 6],
       [5, 6]])

適合 x 的形狀。

資源: