計算機視覺系列 Numpy基礎

2021-10-02 23:14:33 字數 3402 閱讀 7652

numpy是python中非常常用的庫,這裡我們介紹一些numpy的常見語法。

import numpy as np	#使用別名,方便
numpy中建立的陣列型別為』『ndarray』』,以下總結一些常見的建立numpy陣列的方法。

函式說明

np.zeros((shape))

建立乙個shape形狀的零陣列

np.ones((shape))

建立乙個shape形狀的全1陣列

np.full((shape),num)

建立乙個shape形狀的值全為num的陣列

np.eye(n)

建立乙個n * n形狀的單位陣列

np.random.random((shape))

建立乙個shape形狀的隨機數組

np.arange(begin,end,step)

以begin為起點,以step為步長累加,直到不超過end(且不等於end),預設step=1

np.linspace(begin,end,n)

將區間[begin,end]切分為n等份

np.array(list|tuple)

通過list或tuple建立numpy陣列

一下總結一些numpy陣列的常見屬性。

屬性說明

a.dtype

返回陣列中元素的型別

a.size

返回陣列中元素的總個數

a.shape

返回陣列的形狀

a.itemsize

返回陣列中每乙個元素占用的位元組數

a.ndim

返回陣列的維數

運算說明

a.reshape((shape))

調整陣列形狀

a * b

陣列元素對應元素相乘,線性代數中的點乘

a.dot(b)

矩陣相乘,線性代數中的矩陣乘法,特別注意!

a.sum()/np.sum(a,axis)

求陣列元素之和,使用axis也可以求各個維度之和

a.min()/np.min(a)

求陣列最小值

a.max()/np.max(a)

求陣列最大值

a.cumsum()

遞迴相加

a.t獲取陣列的轉置矩陣

下面總結一些本人經常遇到的函式和用法。

numpy中的切片

numpy中的切片可以說是最常用的語法了,下面介紹常見的幾種用法。

a=np.arange(0,

100,10)

indices=[1

,5,-

1]b=a[indices]

print

(a)#[ 0 10 20 30 40 50 60 70 80 90]

print

(b)#[10 50 90]

a=np.linspace(0,

10,10)

b=np.sin(a)

print

(a)#[ 0. 1.11111111 2.22222222 3.33333333 4.44444444 5.55555556 6.66666667 7.77777778 8.88888889 10. ]

print

(b)#[ 0. 0.8961922 0.79522006 -0.19056796 -0.96431712 -0.66510151 0.37415123 0.99709789 0.51060568 -0.54402111]

mask=b>

0#獲取到乙個布林陣列

print

(b[mask]

)#[0.8961922 0.79522006 0.37415123 0.99709789 0.51060568]

a=np.arange(0,

100,10)

b=a[:5

]c=a[a>=50]

print

(b)#[ 0 10 20 30 40]

print

(c)#[50 60 70 80 90]

numpy廣播機制

建議參考一些部落格,這裡不介紹了(相對較複雜)。

對numpy中axis的理解

參考:徹底理解numpy中的axis

這個東西時間久了也會忘記,所以最好的辦法就是用的時候在python終端比較一下axis=0和axis=1的區別(或者看文件例子)。

numpy陣列的拼接

numpy中常用的拼接函式有一下幾種:

當axis=none的時候對arr和values沒有形狀要求,最終結果會被展平。當axis不等於none的時候,arr和values的形狀要相同。(直接翻譯文件了)

np.hstack()

np.hstack()進行水平的拼接。

a=np.array((1

,2,3

))b=np.array((2

,3,4

))print

(np.hstack(

(a,b)))

#array([1,2,3,2,3,4])

a=np.array([[

1],[

2],[

3]])

b=np.array([[

4],[

5],[

6]])

print

(np.hstack(a,b)

)#array([[1,4],[2,5],[3,6]])

np.vstack()

np.vstack()進行垂直的拼接。

a=np.array([1

,2,3

])b=np.array([2

,3,4

])print

(np.vstack(

(a,b)))

#array([[1,2,3],[2,3,4]])

a=np.array([[

1],[

2],[

3]])

b=np.array([[

4],[

5],[

6]])

print

(np.vstack(

(a,b)))

#array([[1],[2],[3],[4],[5],[6]])

(計算機視覺)計算機視覺基礎

opencv cximage cimg freeimage opencv中vc庫的版本與visual studio版本的對應關係 vc8 2005 vc9 2008 vc10 2010 vc11 2012 vc12 2013 vc14 2015 vc15 2017 visual studio中的輔助...

計算機視覺系列 1 任務及應用

做工程第一步,確定任務,標註資料 下圖很好的展示了影象識別的四種任務 如圖 a 給定一張輸入影象,影象分類的任務是判斷該影象屬於哪類,如果是多工分類,可以用於分類該影象包含哪個類別。所以該類任務的標註非常簡單,只需要標註的種類即可.如果是多工的,只需要多標註幾種是否包含某類物品即可 如圖 b 目標定...

計算機視覺

主講老師 曹洋 課程 視覺 基礎 底 層處理 影象處理 特徵提 取 中 層處理 影象分割 相機標 定 深度 估計 運 動估計 高層處 理 3d 重建 目 標識別 視 覺基 礎 底層 處理 圖 像處理 特徵提取 中層 處理 圖 像分割 相機標定 深度估 計 運動 估計 高層處理 3d重 建 目標 識別...