NumPy(1)簡介,基礎屬性,陣列建立(ones,zeros,empty,arange,linespace)
阿新 • • 發佈:2019-01-07
保留初心,砥礪前行
在使用tensorflow的時候需要對輸入的tensor進行處理。
NumPy系統是Python的一種開源的數值計算擴充套件。這種工具可用來儲存和處理大型矩陣,比Python自身的巢狀列表(nested list structure)結構要高效的多。 ——百度百科
因此簡單記錄一下NumPy的學習筆記,方便進行資料處理。
- NumPy的主要物件是齊次多維陣列。這是一個的有相同型別的元素的表(通常是數字),索引是一個元組的正整數。在NumPy中維度被稱為軸(axes)。axes的數量叫做rank。
例如,三維空間中的一個點的座標[1, 2, 1]
在下邊的例子中,這個陣列有兩個軸 (可以理解為橫軸和縱軸)。縱軸的長度為2,橫軸的長度為3。
[[ 1., 0., 0.],
[ 0., 1., 2.]]
NumPy的陣列類叫做ndarray,別名array。
注意:這裡的numpy.array和python標準庫中的那個只能解決一維陣列,只提供了少量功能的array.array不一樣。ndarray的一些屬性:
ndarray.ndim:
陣列中軸的數量,如下圖所示,該陣列有橫軸縱軸兩條軸,所以ndarray.ndim值為2
ndarray.shape
陣列的維度,是指明陣列每一維的size的整形元組。
ndarray.size
陣列的所有的數字的數量。
ndarray.dtype
描述陣列中元素的型別的物件。從下圖中可以看出返回值並不是一個數據型別,而是資料型別的物件。可以通過ndarray.dtype.name得到它的型別。
ndarray.itemsize
陣列中每個元素的位元組數。
建立陣列:
使用array函式建立陣列。陣列的型別由陣列中元素的型別得到。
注意:array函式中傳入的要是一個list。
import numpy as np
a = np.array([1, 2, 3])
print a
[1 2 3]
import numpy as np
a = np.array([(1, 2, 3), (1, 2, 3), (1, 2, 3)])
print a
[[1 2 3]
[1 2 3]
[1 2 3]]
通常,一個數組的元素最初未知,但它的大小已知。因此NumPy提供了幾個函式使用初始內容佔位符來建立陣列。
函式zeros
建立全0陣列, 函式ones
建立全1陣列, 函式empty
建立初始值隨機的陣列。這些陣列預設型別為float64
,也可以在函式中制定型別
類似ones
和zeros
,存在函式ones_like
和zeros_like
,作用是建立一個與給出的陣列相同形狀和型別的全1或全0陣列。
import numpy as np
a = np.zeros([2, 3])
print a
[[ 0. 0. 0.]
[ 0. 0. 0.]]
import numpy as np
a = np.ones([2, 3])
print a
[[ 1. 1. 1.]
[ 1. 1. 1.]]
import numpy as np
a = np.ones([2, 3], dtype=np.int32)
print a
[[1 1 1]
[1 1 1]]
import numpy as np
a = np.empty([2, 3])
print a
[[ 0.00000000e+000 2.68156175e+154 2.12354999e-314]
[ 2.12357331e-314 2.12357331e-314 2.12357336e-314]]
NumPy中有一個類似於range
功能的函式arange
,和range
基本相同,只是返回的不是list而是陣列。
np.arange(1, 20, 3) #從1開始到20,間隔3
array([ 1, 4, 7, 10, 13, 16, 19])
函式linspace
,如下程式碼所示,在1到2中按等差數列找出10個元素。
np.linspace(1, 2, 10)
array([ 1. , 1.11111111, 1.22222222, 1.33333333, 1.44444444,
1.55555556, 1.66666667, 1.77777778, 1.88888889, 2. ])
其他陣列建立方式見以下相關連結中NumPy(3)的內容。