作者 Airy
本文轉自AiryData,轉載需授權
前面已經安裝並學習了Python中的科學計算庫,今天主要學習下numpy數組。
Numpy中的多維數組稱為ndarray,它有兩個組成部分。
在數組的處理過程中,原始數據不受影響,變化的只是元數據。
Numpy數組通常是由相同種類的元素組成,即數組中數據類型必須一致。好處是:數組元素類型相同,可輕鬆確定存儲數組所需的空間大小。同時,numpy可運用向量化運算來處理整個數組。Numpy數組的索引從0開始。(這裡我使用的是ipython命令行,ipython最近剛開始用,以後詳細介紹下。)
In [3]: import numpy as np
In [4]: a = np.arange(5)
In [5]: a.dtype
Out[5]: dtype('int32')
上面數組的數據類型為int32,這一般跟你安裝的Python版本有關。不過我安裝的是64位,不知道怎麼回事這裡是int32,後面再檢查下。
上一篇我們說了向量(一維的numpy數組)的創建方法,下面看一下上面生成的向量。
In [6]: a
Out[6]: array([0, 1, 2, 3, 4])
In [7]: a.shape
Out[7]: (5,)
可以看到,該向量有5個元素,該數組的shape屬性是一個元組,存放的是數組在每一個維度的長度。
我們已經知道了如何創建向量,下面開始建立多維numpy數組,生成矩陣後,再看它的形狀。
In [8]: m = np.array([np.arange(2),np.arange(2)])
In [9]: m
Out[9]:
array([[0, 1],
[0, 1]])
上面我們用arrange方法創建了一個簡單的2*2的數組,利用array()函數創建數組時,需要傳遞給它一個對象,並且這個對象必須是數組類型。如Python的列表。
創建之後,我們要選擇矩陣的元素,這裡就相當於一個二維坐標系,我們只要找到對應的坐標即可。
In [10]: m[0,0]
Out[10]: 0
In [11]: m[0,1]
Out[11]: 1
In [12]: m[1,0]
Out[12]: 0
In [13]: m[1,1]
Out[13]: 1
可以看到,選擇數組元素很簡單,對於數組m,只要通過m[m,n]的形式,就能訪問數組內的元素,其中m和n為數組元素的下標,從0開始。
Python本身支持整型、浮點型和複數型,為了科學計算,numpy提供了更加豐富的數據類型,注意:numpy跟數學運算有關的數據類型的名稱都以數字結尾。這個數字指示了該類型的變量所佔用的二進位位數。Numpy的各種數值類型如下圖所示:
每一種數據類型都有相應的轉換函數,許多函數都帶有一個指定數據類型的參數,該參數一般可選。
In [15]: np.float64(30)
Out[15]: 30.0
In [16]: np.bool(30)
Out[16]: True
In [17]: np.float(True)
Out[17]: 1.0
In [18]: np.int8(30)
Out[18]: 30
In [20]: np.arange(7, dtype='uint16')
Out[20]: array([0, 1, 2, 3, 4, 5, 6],dtype=uint16)
注意:不允許把複數轉化成整型。也不允許把複數轉化為浮點數,但是允許把浮點數轉化為複數。複數的實部和虛部分別使用real()函數和imag()函數提取。
數據類型對象是numpy.dtype類的實例。數組是一種數據類型。數據類型對象表明了數據佔用的字節數,所佔用字節的具體數目一般存放在類dtype的itemsize中。
In [6]: import numpy as np
In [7]: a = np.arange(5)
In [8]: a
Out[8]: array([0, 1, 2, 3, 4])
In [9]: a.dtype.itemsize
Out[9]: 4
一維numpy數組的切片操作和Python列表的切片一樣,看一下下面的例子來體驗一下。
In [34]: a = np.arange(9)
In [35]: a
Out[35]: array([0, 1, 2, 3, 4, 5, 6, 7, 8])
#通過下標取數據
In [36]: a[3:7]
Out[36]: array([3, 4, 5, 6])
#用下標選擇元素,範圍0到7,下標每次遞增2
In [37]: a[:7:2]
Out[37]: array([0, 2, 4, 6])
#反轉數組
In [38]: a[::-1]
Out[38]: array([8, 7, 6, 5, 4, 3, 2, 1, 0])
今天學習一下Python中numpy的簡單使用。希望通過上面的操作能幫助大家。如果你有什麼好的意見,建議,或者有不同的看法,我都希望你留言和我們進行交流、討論。
推薦閱讀
【書單】18本數據科學家必讀的R語言和Python相關書籍
如何像數據科學家一樣思考
北京VS上海,哪座城市人口更多?
我是如何一不小心阻止了勒索病毒的全球蔓延
用python抓取摩拜單車API數據並做可視化分析(源碼)
2017年大數據和數據科學的六大發展趨勢
你每天要花多少時間在手機上?
初級數據科學家求職時的 3 大必備能力
不可錯過的優質深度學習課程
職場 | 資料庫面試常問的一些基本概念
聽說你最擅長「拖」,你「拖」得過Excel嗎?
數據科學優質課程推薦#2:統計入門課程篇
歌手外科和猴姑,大數據告訴你白百何出軌後誰最慘
想學習數據科學?我們整理了一份優質編程入門課程清單
數據科學家在美國仍然是最熱門工作的3大原因
一個優秀數據分析師的準則
Python 實現一個火車票查詢的工具
乾貨 | 攜程實時用戶行為系統實踐
數據分析證明最靠譜的電影評分網站不是 IMDB, 也不是爛番茄,而是...
那些年,寫 Python 犯過的錯誤