Python數據分析-numpy詳細教程一
NumPy是高性能科學計算和數據分析的基礎包,這是一個處理數組的強大模塊,本期將會從如下幾個方面介紹numpy模塊:
1、數組的創建
2、數組屬性和函數
3、數組元素的獲取--索引、切片
一、創建數組
創建數組最簡單的辦法就是使用array函數,它接受一切序列型對象,比如列表和元組等。
1、一維數組的創建
1.1、通過numpy模塊中的arange函數創建一維有序數組
#通過arange函數創建一維數組
In [1]:importnumpyasnp
In [2]:arr1=np.arange(6)
In [3]:arr1
Out[3]:array([,1,2,3,4,5])
1.2、通過numpy模塊中的array函數創建一維數組
#通過列表序列創建一維數組
In [4]:arr2=np.array([2,3,4])
In [5]:arr2
Out[5]:array([2,3,4])
#通過元組序列創建一維數組
In [6]:arr3=np.array((6,7,8,9))
In [7]:arr3
Out[7]:array([6,7,8,9])
2、二維數組的創建
二維數組的創建,本質是列表套列表或者元組套元組,如下所示:
#列表套列表創建二維數組
In [8]:arr4=np.array([[1,2,3,4],[5,6,7,8]])
In [9]:arr4
Out[9]:
array([[1,2,3,4],
[5,6,7,8]])
#元組套元組創建二維數組
In [10]:arr5=np.array(((1,2,3,4),(5,6,7,8),(9,10,11,12)))
In [11]:arr5
Out[11]:
array([[1,2,3,4],
[5,6,7,8],
[9,10,11,12]])
3、特殊數組的創建
除了array函數之外,還有一些函數也可以創建數組,比如,zeros和ones分別可以創建指定長度或形狀全0或全1數組。要用這些方法創建多維數組,只需要傳入一個表示形狀的元組即可,示例如下:
#創建全1的一維數組
In [12]:arr6=np.ones(3)
In [13]:arr6
Out[13]:array([1.,1.,1.])
#創建全1的二維數組
In [14]:arr7=np.ones((3,4))
In [15]:arr7
Out[15]:
array([[1.,1.,1.,1.],
[1.,1.,1.,1.],
[1.,1.,1.,1.]])
#創建全的一維數組
In [16]:arr8=np.zeros(3)
In [17]:arr8
Out[17]:array([0.,0.,0.])
#創建全的二維數組
In [18]:arr9=np.zeros((3,4))
In [19]:arr9
Out[19]:
array([[0.,0.,0.,0.],
[0.,0.,0.,0.],
[0.,0.,0.,0.]])
二、數組屬性和函數
2.1、當一個數組創建好之後,我們更多的想知道數組本身有哪些屬性。
In [1]:importnumpyasnp
In [2]:arr=np.arange(1,13).reshape(3,4)
In [3]:arr
Out[3]:
array([[1,2,3,4],
[5,6,7,8],
[9,10,11,12]])
In [4]:arr.shape#返回數組的行數和列數
Out[4]:(3,4)
In [5]:arr.size#返回數組元素的個數
Out[5]:12
In [6]:arr.dtype#返回數組中元素數據類型
Out[6]:dtype("int32")
In [7]:arr.ndim#返回數組的維數
Out[7]:2
In [8]:arr.T#返回數組的轉置結果
Out[8]:
array([[1,5,9],
[2,6,10],
[3,7,11],
[4,8,12]])
2.2、介紹完數組屬性之後,接下來我們來看看數組自身有哪些函數可操作
1、將一維數組轉換成二維數組,通過reshape函數重置數組的行數和列數
In [1]:importnumpyasnp
In [2]:arr=np.arange(1,13)#創建一維數組
In [3]:arr
Out[3]:array([1,2,3,4,5,6,7,8,9,10,11,12])
# 一維數組轉換為二維數組
In [4]:arr1=arr.reshape(4,3)
In [5]:arr1
Out[5]:
array([[1,2,3],
[4,5,6],
[7,8,9],
[10,11,12]])
2、數組行數的統計,可以採用len函數
#數組行數的統計
In [6]:len(arr1)#返回數組的行數
Out[6]:4
3、數組轉換成列表,採用tolist函數
#數組轉換成列表
In [7]:arr2=arr1.tolist()
In [8]:arr2
Out[8]:[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
4、數組數據類型的轉換,採用astype函數強制轉換
#數組數據類型的轉換
In [9]:arr3=arr1.astype(float)
In [10]:arr3
Out[10]:
array([[1.,2.,3.],
[4.,5.,6.],
[7.,8.,9.],
[10.,11.,12.]])
In [11]:arr1.dtype
Out[11]:dtype("int32")
In [12]:arr3.dtype
Out[12]:dtype("float64")
三、數組元素的獲取--索引、切片
一維數組元素的獲取與列表元素的獲取方式一樣,如下所示:
In [1]:importnumpyasnp
In [2]:arr=np.arange(6)
In [3]:arr
Out[3]:array([,1,2,3,4,5])
In [4]:arr[3]#獲取第4個元素
Out[4]:3
In [5]:arr[:3]#獲取前3個元素
Out[5]:array([,1,2])
In [6]:arr[3:]#獲取第4個元素以及之後的所有元素
Out[6]:array([3,4,5])
In [7]:arr[-1]#獲取最後1個元素
Out[7]:5
In [8]:arr[-2:]#獲取最後2個元素
Out[8]:array([4,5])
In [9]:arr[::2]#從第1個元素開始,獲取步長為2的所有元素
Out[9]:array([,2,4])
二維數組元素的獲取,如下所示:
In [1]:importnumpyasnp
In [2]:arr=np.arange(12).reshape(3,4)
In [3]:arr
Out[3]:
array([[,1,2,3],
[4,5,6,7],
[8,9,10,11]])
In [4]:arr[1]# 返回數組的第2行
Out[4]:array([4,5,6,7])
In [5]:arr[:2]#返回數組的前2行
Out[5]:
array([[,1,2,3],
[4,5,6,7]])
In [6]:arr[[,2]]#返回指定的第1行和第3行
Out[6]:
array([[,1,2,3],
[8,9,10,11]])
In [7]:arr[:,]#返回數組的第1列
Out[7]:array([,4,8])
In [8]:arr[:,-2:]#返回數組的最後2列
Out[8]:
array([[2,3],
[6,7],
[10,11]])
In [9]:arr[:,[,2]]#返回數組的第1列和第3列
Out[9]:
array([[,2],
[4,6],
[8,10]])
In [10]:arr[1,2]#返回數組中第2行第3列對應的元素
Out[10]:6
此次numpy分享差不多結束了,下期將繼續分享該模塊的其它內容,若我寫的對大家有所幫助,麻煩大家給個鼓勵或者關注一下。
學習與分享,關注小號


※Python徒手實現識別手寫數字—對圖片結果進行加權處理
※為什麼生態學家要學習Python或者R?
TAG:Python |