numpy安裝與常用的屬性方法
最近兩個月沒有更新部落格是因為我在嘗試使用keras進行影象識別,然後裡面就使用到了numpy,今天我就來寫一下numpy為什麼在機器學習領域那麼使用的那麼多,現在我們先來安裝一下numpy
簡單介紹numpy
numpy 底層採用c 語言編寫 它的主要的使用領域是科學技術領域,非常適合做矩陣運算
什麼是矩陣? 簡單說一下,我們都知道在任何一門程式語言裡面都有列表或者陣列的概念
也可以叫做向量vector 陣列或者列表是一維的就像這個樣子[1, 2, 3, 4, 5]而矩陣呢,你可以把它理解為多維的陣列大概像這樣的[[1 2 3], [4 5 6]] 這就叫做矩陣,而numpy 非常適合做矩陣運算。那這個numpy又是如何跟影象識別關聯起來的呢,首先我們來看一張圖片,如下圖
在我們眼裡的圖片,可以看到是一隻貓,但是計算機如果要做識別,它要怎麼看這個圖呢。
答案就是把這個圖片轉為計算機可以識別的樣子。怎麼轉呢,什麼樣才是計算機可以識別的樣子
?
這裡我們就需要知道計算機要怎麼看圖了,我們都知道影象其實是由一個一個的畫素點組成的,我們把
畫素點使用數值來表達怎麼樣?使用0-255表示畫素點,顏色越深數值越高,反之越淺,就像下面的圖片
人類的眼中是這樣的(圖片來自知乎:https://www.zhihu.com/question/39022858)
計算機眼中是這樣的
現在我們知道了計算機可以識別的影象是什麼樣的了,現在需要解決的問題是,我們有影象了,如何把它轉成
計算機可以識別的樣子,這裡就需要使用python的視覺處理模組啦 cv2 模組
現在我們把剛才是圖片轉成計算機可以識別的樣子
看到了嗎,影象被轉換成了矩陣!這樣就把numpy和機器學習關聯起來了,實際上tensorflow等框架在做影象識別的時候,輸入的資料就是這樣的影象矩陣!! 好啦扯遠啦。接下來繼續講numpy
安裝numpy(環境Linux)
pip install numpy
常用的屬性
1 檢視矩陣的資料型別
dtype
比如我們檢視剛才我們把圖片轉換成的矩陣資料型別是什麼
import numpy as np import cv2 image = cv2.imread("cat.jpg") image = np.array(image) image.dtype ## out ## dtype('uint8')
2 檢視矩陣的大小
shape
image.shape
## out ##
(407, 430, 3)
這個407 和 430 代表影象的寬度和高度, 3 代表RGB 三顏色在機器學習裡面叫做通道(channel)如果影象是黑白色的 這個就是 1
3 檢視矩陣的深度
ndim
image.ndim
## out ##
3
常用方法
1 生成隨機矩陣
根據給定維度生成[0,1)之間的資料,包含0,不包含1
numpy.random.rand(3, 2)
## out ##
[[0.38723131 0.56080535 0.28986393]
[0.52948079 0.49717751 0.42280896]
[0.51374604 0.56677323 0.90121968]]
2 生成 一維矩陣
arange
這個和python 裡面的range 方法差不多
numpy.arange(6)
## out ##
array([0, 1, 2, 3, 4, 5])
3 將arange一維矩陣拆分成 n 維矩陣
reshape
numpy.arange(6).reshape((2, 3))
## out ##
array([[0, 1, 2],
[3, 4, 5]])
4 建立矩陣
array
建立矩陣時裡面的元素資料型別可以制定,使用引數dtype 進行指定
array = numpy.array([[1, 2], [3, 4]])
5 求矩陣最大值,最小值,平均值
max
min
mean
numpy.max(array)
numpy.min(array)
numpy.mean(array)
## out ##
4
1
2.5