1. 程式人生 > >NumPy(1)簡介,基礎屬性,陣列建立(ones,zeros,empty,arange,linespace)

NumPy(1)簡介,基礎屬性,陣列建立(ones,zeros,empty,arange,linespace)

保留初心,砥礪前行

在使用tensorflow的時候需要對輸入的tensor進行處理。

NumPy系統是Python的一種開源的數值計算擴充套件。這種工具可用來儲存和處理大型矩陣,比Python自身的巢狀列表(nested list structure)結構要高效的多。 ——百度百科

因此簡單記錄一下NumPy的學習筆記,方便進行資料處理。

  • NumPy的主要物件是齊次多維陣列。這是一個的有相同型別的元素的表(通常是數字),索引是一個元組的正整數。在NumPy中維度被稱為軸(axes)。axes的數量叫做rank。
    例如,三維空間中的一個點的座標[1, 2, 1]
    是rank為1的陣列,因為它有一個軸(axes),這個軸的長度為3。
    在下邊的例子中,這個陣列有兩個軸 (可以理解為橫軸和縱軸)。縱軸的長度為2,橫軸的長度為3。
[[ 1., 0., 0.],
 [ 0., 1., 2.]]
  • NumPy的陣列類叫做ndarray,別名array。
    注意:這裡的numpy.array和python標準庫中的那個只能解決一維陣列,只提供了少量功能的array.array不一樣。

  • ndarray的一些屬性:

    ndarray.ndim
    陣列中軸的數量,如下圖所示,該陣列有橫軸縱軸兩條軸,所以ndarray.ndim值為2
    ndarray.ndim
    ndarray.shape


    陣列的維度,是指明陣列每一維的size的整形元組。
    ndarray.shape
    ndarray.size
    陣列的所有的數字的數量。
    ndarray.size
    ndarray.dtype
    描述陣列中元素的型別的物件。從下圖中可以看出返回值並不是一個數據型別,而是資料型別的物件。可以通過ndarray.dtype.name得到它的型別。
    ndarray.dtype
    ndarray.itemsize
    陣列中每個元素的位元組數。
    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,也可以在函式中制定型別
類似oneszeros,存在函式ones_likezeros_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)的內容。