NumPy 是一個 Python 包。 它代表 “Numeric Python”。 它是一個由多維數組對象和用於處理數組的例程集合組成的庫。
·常見的數據類型
bool_ 一個字節的布爾值
int_ 默認的整數
int8 字節-128-127 ; int16,int32, int64 對應的整數
float_ float64的簡寫, float16 float32 float64
complex_
·創建n維數組 numpy.array()函數的使用
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
序號 | 參數及描述 |
---|---|
1. | object 任何暴露數組接口方法的對象都會返回一個數組或任何(嵌套)序列。 |
2. | dtype 數組的所需數據類型,可選。 |
3. | copy 可選,默認爲true ,對象是否被複制。 |
4. | order C (按行)、F (按列)或A (任意,默認)。 |
5. | subok 默認情況下,返回的數組被強制爲基類數組。 如果爲true ,則返回子類。 |
6. | ndimin 指定返回數組的最小維數。 |
數組的屬性
numpy.shape : 返回一個包含數組元素的元組,也可以調整數組的排列形式
import numpy as npa = np.array([[1,2,3],[4,5,6]])
print a.shape #(2,3)
a.shape=(3,2)
print a ##[[1,2],[3,4],[5,6]]
numpy.reshape() 功能與屬性shape相似,但一個爲方法,一個爲屬性
a.reshape(3,2)
numpy.ndim 返回數組的維數
數組的創建
np.arange(start,stop,step,dtype='') 返回等間隔數字的函數
a= np.arange(2,10,2,dtype='flaot') print a # [2.,4.,6.,8.]
np.linspace(start,stop,num,endpoint,restep,dtype)
1. | start序列的起始值 |
2. | stop序列的終止值,如果endpoint爲true,該值包含於序列中 |
3. | num 要生成的等間隔樣例數量,默認爲50 |
4. | endpoint序列中是否包含stop值,默認爲ture |
5. | retstep如果true,返回樣例,以及連續數字之間的步長 |
6. | dtype輸出ndarray的數據類型 |
切片和索引(用戶遍歷數組中的元素)
切片(slice對象)通過將start,stop和step參數提供給內置的slice函數來構造一個 Python slice對象
a= np.arange(0,10,1,dtype='float')
s=slice(2,5,1) # 函數而非對象
print a[s] #[2 3 4]
上述代碼等價於:
import numpy as np a = np.arange(10) b = a[2:7:2] print b
獲取單個元素: a[5]
獲取第2個及之後的元素:a[2:]
獲取第2個至第5個元素:a[2:5]
獲取數組的逆序:a[::-1]
·切片還可以包括省略號(...),來使選擇元組的長度與數組的維度相同。 如果在行位置使用省略號,它將返回包含 行中元素的ndarray
import numpy as np a = np.array([[1,2,3],[3,4,5],[4,5,6]]) print '我們的數組是:' print a print '\n' # 這會返回第二列元素的數組: print '第二列的元素是:' print a[...,1] print '\n' # 現在我們從第二行切片所有元素: print '第二行的元素是:' print a[1,...] print '\n' # 現在我們從第二列向後切片所有元素: print '第二列及其剩餘元素是:' print a[...,1:]
高級索引
高級索引始終返回數據的副本。 與此相反,切片只提供了一個視圖。有兩種類型的高級索引:整數和布爾值。
整數索引:
import numpy as np x = np.array([[1, 2], [3, 4], [5, 6]]) y = x[[0,1,2], [0,1,0]] print y ## [1 4 5]
使用 : 和 ...的高級索引
import numpy as np x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]]) print '我們的數組是:' print x print '\n' # 切片 z = x[1:4,1:3] print '切片之後,我們的數組變爲:' print z print '\n' # 對列使用高級索引 y = x[1:4,[1,2]] print '對列使用高級索引來切片:' print y
結果:
我們的數組是: [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] 切片之後,我們的數組變爲: [[ 4 5] [ 7 8] [10 11]] 對列使用高級索引來切片: [[ 4 5] [ 7 8] [10 11]]
布爾索引
print a[a>5]
import numpy as np x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]]) print '我們的數組是:' print x print '\n' # 現在我們會打印出大於 5 的元素 print '大於 5 的元素是:' print x[x > 5]
結果
我們的數組是:
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
大於 5 的元素是:
[ 6 7 8 9 10 11]