1. 程式人生 > >python3 numpy 基礎(一)

python3 numpy 基礎(一)

  • Numpy 的的主要物件是同構多維陣列。它是一個元素表,其中的資料型別是相同的。如[1,2,3], [1.0,2.0,3.0]。在Numpy維度中稱為軸。例如3D空間中的點座標[1,2,1]具有一個軸,該軸有三個元素,所以它的長度為3。
[
    [1,2,3],
    [4,5,6],
]

#該陣列有兩個軸
#第一個軸的長度為2.
#第二個軸的長度為3.
  • Numpy的ndarry類提供對array的支援,與python標準庫中的array不同,後者僅能處理一維陣列,且功能較少。
ndarray.ndim
    陣列的軸數(尺寸)。

ndarray.shape
    陣列的大小。這是一個整數元組,表示每個維度中陣列的大小。對於具有n行和m列的矩陣,shape將是(n,m)。shape因此,元組的長度 是軸的數量ndim。

ndarray.size
陣列的元素總數。這相當於元素的乘積shape。 ndarray.dtype 描述陣列中元素型別的物件。可以使用標準Python型別建立或指定dtype。此外,NumPy還提供自己的型別。例如numpy.int32,numpy.int16和numpy.float64。 ndarray.itemsize 陣列中每個元素的大小(以位元組為單位)。例如,型別的元素陣列float64有itemsize8(= 64/8),而其中一個型別complex32有itemsize4(= 32/8)。它相當於ndarray.dtype.itemsize。 ndarray.data 包含陣列實際元素的緩衝區。通常,不需要使用此屬性,使用索引工具訪問陣列中的元素。
  • 例1

In [1]: import numpy as np

In [2]: a = np.arange(12).reshape(3,4) #arrange(12)跟python自帶的range一樣的意思,reshape(n,m)轉為n行m列的矩陣

In [3]: a
Out[3]: 
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

In [4]: a.ndim  #軸數
Out[4]: 2

In [5]: a.dtype.name    #獲取陣列的型別名稱
Out[5]: 'int64
' In [6]: type(a) #獲取物件型別 Out[6]: numpy.ndarray In [7]: b = np.array([6,7,8]) In [8]: b Out[8]: array([6, 7, 8]) In [9]: type(b) Out[9]: numpy.ndarray
  • 陣列建立
#使用array建立陣列,注意引數是列表或元組。
In [12]: np.array( [1.0, 2.0, 3.0], dtype=int) #dtype建立時指定資料型別。
Out[12]: array([1, 2, 3])

#使用ndarray建立陣列,引數是列表或元組,該列表或元組中的資料表示維度。
In [13]: np.ndarray([2,3])#2行三列矩陣,隨機初始化
Out[13]: 
array([[6.92037299e-310, 6.92037299e-310, 2.37663529e-312],
       [2.46151512e-312, 2.35541533e-312, 8.48798317e-313]])

#zeros函式建立的是一個由0填充的陣列。
In [32]: np.zeros((2,2))
Out[32]: 
array([[0., 0.],
       [0., 0.]])

In [33]: np.zeros([3,4])
Out[33]: 
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])

#ones函式建立的是一個由1填充的陣列。
In [34]: np.ones((3,4))
Out[34]: 
array([[1., 1., 1., 1.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.]])

In [35]: np.ones([2,2])
Out[35]: 
array([[1., 1.],
       [1., 1.]])

#numpy提供了一個類似range的函式
In [38]: np.arange(10,30,5)
Out[38]: array([10, 15, 20, 25])

#當arange與浮點引數一起使用時,由於有限的浮點精度,通常無法預測獲得的元素數量。出於這個原因,通常最好使用linspace作為引數接收我們想要的元素數量的函式

In [45]:  from numpy import pi

In [46]: np.linspace( 0, 2, 9 ) 
Out[46]: array([0.  , 0.25, 0.5 , 0.75, 1.  , 1.25, 1.5 , 1.75, 2.  ])

In [47]: x = np.linspace( 0, 2*pi, 100 )

In [48]:  f = np.sin(x)

In [49]: f
  • 列印陣列
In [55]: a = np.array([1,2,3,4,5])
In [56]: print(a)
[1 2 3 4 5]

注意:如果資料過多,列印時會隱藏中間部分的資料,如果需要強制顯示,
則設定  np.set_printoptions(threshold=np.nan)