python3 numpy 基礎(一)
阿新 • • 發佈:2018-12-09
- 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)